bash でコマンドがエラー終了を調べてなんとかする。
シェルスクリプトのコマンドでエラーが起きたら、エラー表示したり、コマンド失敗のエラー手続きを実行する
なれてたら簡単なのですが、例外になれたプログラマや非表示の暗黙ステータスコードを使うのが初心者に分かりづらいみたいなのでメモとして残す。
成功時だけ実行して、失敗は実行しない。
コマンドを行単位で実行するのが早い
echo a && echo b
失敗時に実行して、成功時には実行しない。
これも、コマンドを行単位で実行するのが早い。
touch a || echo error
if文を用いる場合:成功時
条件分岐は単純にifを用いても出来る。
if echo a ; then echo b fi
if の中に、コマンドを直接入れちゃう。「もしコマンドが成功したら」という意味になる。
if 文を用いる場合:失敗時
「もしコマンドが失敗したら」という意味になる。
if ! mkdir /a ; then echo b fi
if 文を用いる場合。if else
if ! mkdir /a ; then echo failed else echo success fi
ただし、if 句のなか、else 句の中は、空っぽはだめ
## これはエラーになる。 if touch a ; then else echo failed fi
代わりに何もしないを意味するコマンドtrueを実行する。
## : が何もしないコマンド if touch a ; then : else echo failed fi
コロン : の代わりに true でもいい
if touch a ; then true else echo failed fi
何もしないコマンド を入れるか
何もしないコマンドにはいくつも候補があるので、調べて考えてみると面白いとおもう。
たとえば
/bin/true /bin/false : echo > /dev/null
まとめ
実行が成功したら次になにかする、実行が失敗したら次になにかする
command && echo success command || echo error
if command ; then success fi if !command ; then error; fi