概要
シェルで複雑な条件分岐する時ってどうしたらいいんだろうってなりますよね?
特にtry-catchについては結構思いつくのが面倒だったりするので、メモとしてここに残します。
やり方
シェルにはこんな機能があります。
構文
echo "try" && echo "OK" #echo "try"が成功した時、echo "OK"を実行
ech "fail" || echo "catch" #ech "fail"が失敗(この場合typoなので必ず失敗)する時、echo "catch"を実行
つまり、&&
は直前のコマンドが成功したら次のコマンドを実行するというもの
||
はその逆で、直前のコマンドが失敗したら次のコマンドを実行するというものがあります。
これを組み合わせると、以下のコマンドができます。
try-catch
wget https://hogehoge/ && echo "try-OK" || echo "catch exception"
こうすることで、例外処理を組み込むことができます。
意外に使い勝手がよくて、重宝します。
何で失敗したかについて
何で失敗したかというトレースに関してはエラーログを見て欲しいという感じはあるのですが、
例外によって処理を分けたい時とかはありますよね。
その場合は、$?
を使って条件分岐をするしかなさそうです。
$?
とは、直前の終了ステータスを記載したもので、これが0以外になるため、何で終了したかの情報はここに載ります。
しかし、具体値に依存している関係もあって、特別なことをやろうとするとかなり面倒なので、ワンライナーで書けなくもないですが
あまりお勧めはしません。
この記事が誰かに役に立ちますように...!