他の回答は直接の質問を十分にカバーしていますが、 set -e
の使用にも興味があるかもしれません .これにより、失敗したコマンド (if
などの特定のコンテキスト以外) テスト) は、スクリプトを中止させます。特定のスクリプトでは、非常に便利です。
試してみてください:
my_command || { echo 'my_command failed' ; exit 1; }
4 つの変更:
&&
を変更||
まで{ }
を使用( )
の代わりに;
を導入するexit
の後 そして{
の後のスペース}
より前
コマンドが失敗した場合 (0 以外の値で終了) にのみメッセージを出力して終了したいので、 ||
が必要です。 &&
ではありません .
cmd1 && cmd2
cmd2
を実行します cmd1
のとき 成功します(終了値 0
)。どこで
cmd1 || cmd2
cmd2
を実行します cmd1
のとき 失敗 (終了値がゼロ以外)。
( )
の使用 それらの中のコマンドをサブシェルで実行させます exit
を呼び出す そこから、元のシェルではなくサブシェルを終了するため、元のシェルで実行が続行されます。
これを克服するには、{ }
を使用します
最後の 2 つの変更は、bash で必要です。