errexit(-e)で実行するときにゼロ以外の戻りコードをどのように予想しますか?そうでなければ失敗しますか?

errexit(-e)で実行するときにゼロ以外の戻りコードをどのように予想しますか?そうでなければ失敗しますか?

errexit オプションが有効な場合、コマンドが失敗するとスクリプトは終了します。失敗すると予想される特定のコマンドに対してこの動作を元に戻したいと思います。つまり、続けたいです。〜しない限り表示されたコマンドが失敗しました。

私は現在このようなことをしていますが醜いです。

some_test() { 
    # retuns nonzero if some condition is met, and zero otherwise
}

some_change() {
    # makes a change that should alter the return code of the above test
}

set -e

some_test
echo "expected success, found it"

some_change

set +e
some_test           # expect failure

if [[ $? -eq 0 ]]
then
   echo "expected failure, found success"
   exit(1)
else
   echo "expected failure, found it"
fi

set -e

# ...more testing below

もっと簡潔なものを探しています。私もできることを知っています我慢次のコマンドが失敗しました。

some_test
some_change
some_test && true

しかし、私は失敗を容認したくない、失敗を主張したい。 2番目のテストに合格すると、スクリプトが失敗することを望みます。

ベストアンサー1

if my_command; then false; else true; fi

私はこれが条件付き体操でシミュレートできるとは信じていません。

おすすめ記事