Bashですべての呼び出しスクリプトを終了するにはどうすればよいですか?
質問
次のスクリプトがあるとしましょう
灰
echo in a
if test 1 -ne 2; then
echo oops
exit 1
fi
B.Sh
echo in b
./a.sh
echo in b 2
B.Shを実行するとき、A.Shが終了した場合は終了したいです。どうすればいいですか?
(現在の出力はです
in b
in a
oops
in b 2
そして、それは私が欲しいものではありません)
ありがとう、リヴカ
解決
コマンドの返品ステータスを確認してください、対応する変数は $?
。または、使用して短絡することができます command || exit
他のヒント
echo in b
./a.sh && echo in b 2
これは基本的に、最初のスクリプトがゼロ以外を終了しないことを確認します。それが真実であり、その後のみである場合にのみ、2番目の関数が実行されます。
サブシェルのリターンステータスを明示的にチェックせずに実行できる方法はないと思います。
# This will run b.sh, and if that exits with a non-zero status, we will also
# exit with that same status; otherwise, we continue.
./b.sh || echo $?
所属していません StackOverflow