はじめに
シェルスクリプトで意図せずエラー時に処理を中断させたい場合にset -e
を使います。
set -e
しつつ、意図したエラーであれば処理を先に進めたい場合のメモです。
アジェンダ
- どうやるか
- 具体例
- 使い所
どうやるか
&& true
を使います。
いくつか方法はあるのですが、自分的にはこれだけ使ってます。
具体例
サンプル
以下のようなシェルスクリプトサンプルで説明します。
- stop.sh
$ cat stop.sh #!/bin/bash set -e echo "hoge" # あってる ehco "fuga" # echoをスペルミス echo "piyo" # あってる
- そのまま実行した場合
$ ./stop.sh hoge ./stop.sh: line 4: ehco: command not found
piyo
が出力されずに処理が中断されます。
&& true
を使う
stop.sh
を以下のように変更します
$ cat stop.sh #!/bin/bash set -e echo "hoge" && true ehco "fuga" && true echo "piyo" && true
- 実行
$ ./stop.sh hoge ./stop.sh: line 6: ehco: command not found piyo
piyo
まで出力されました。
おわり
ちょいスクリプトにこそエラーハンドリングがっつり書くよりはset -e
ですませたい。
でもここで処理は中断したくない!
ってことはまぁまぁあります。
横着しすぎ説\(^o^)/