Bashですべての呼び出しスクリプトを終了するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/2216200

  •  19-09-2019
  •  | 
  •  

質問

次のスクリプトがあるとしましょう

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 $?
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top