errexit(-e)を使用して実行している場合、ゼロ以外の戻りコードを期待し、それ以外の場合は失敗するにはどうすればよいですか?

MatrixManAtYrService

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番目のテストに合格した場合、スクリプトを失敗させたいと思います。

markasoftware
if my_command; then false; else true; fi

条件付き体操を使ってこれをエミュレートすることは不可能だと思います。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ