私は以下のオプションを使用しています
set -o pipefail
set -e
bash スクリプトで、エラー発生時に実行を停止します。実行中のスクリプトが約 100 行あり、スクリプト内のすべての行の戻りコードをチェックしたくありません。
しかし、特定のコマンドについては、エラーを無視したいのですが、どうすればいいでしょうか?
ベストアンサー1
ソリューション:
particular_script || true
例:
$ cat /tmp/1.sh
particular_script()
{
false
}
set -e
echo one
particular_script || true
echo two
particular_script
echo three
$ bash /tmp/1.sh
one
two
three
印刷されることはありません。
pipefail
また、がオンの場合、パイプ内のコマンドの 1 つが非ゼロの終了コードを持つ場合、シェルはパイプ全体の終了コードが非ゼロであると判断するだけで十分であることを付け加えておきます(pipefail
オフの場合は最後のコマンドである必要があります)。
$ set -o pipefail
$ false | true ; echo $?
1
$ set +o pipefail
$ false | true ; echo $?
0