文が失敗した場合はスクリプトを終了します。

文が失敗した場合はスクリプトを終了します。

ifシェルスクリプトでネストされたステートメントを使用しています。文が失敗した場合は、スクリプトの他の部分を実行せずにスクリプトから出る必要があります。私はとexit 1を試してみましたset -e

ゼロ以外の状態を返すset -eいくつかのステートメントを使用したため、これを行うことはできません。grep

文が失敗した場合にスクリプトの実行を停止する方法を教えてくれる人はいますか?

ベストアンサー1

set -e特定の声明があれば、引き続き使用できます。予想される失敗した場合は、エラー状態を特定して「処理」してください。

$ cat 454756.sh
#!/bin/bash
set -e
[[ 1 -eq 2 ]] || :
echo "Still got here!"
$ ./454756.sh
Still got here!

set -eスクリプトを中止します捕まらないエラー状態。それ以外の場合は、その文を使用できませんif

# this also still works
set -e
if /bin/false; then
    echo "nope"
else
    echo "yep"
fi

注文は|| :コマンドで発生するエラーを「食べる」きちんとした方法で、set -e特定のコマンドを使用して失敗した場合に便利です。完全に大丈夫です。

別の方法は、-e関連コマンドの前に設定を解除してからリセットすることです。

set -e
do_stuff
set +e
/bin/false
set -e

おすすめ記事