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番目のテストに合格した場合、スクリプトを失敗させたいと思います。
if my_command; then false; else true; fi
条件付き体操を使ってこれをエミュレートすることは不可能だと思います。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加