236

信頼できないほど失敗するファジーテストを作成しました。デバッグ コードをいくつか追加しましたが、デバッグ出力を収集できるように、失敗するまでテストを実行したいと考えています。

テストをセットアップしたので、次を使用して実行できます。

./runtest

untilfail私の現在の解決策は、スクリプトを書くことです:

#!/bin/bash
$@
while [ $? -eq 0 ]; do
    $@
done

次に、それを使用します。

untilfail ./runtest

もっと簡単な解決策はありますか?

4

4 に答える 4

403

while実行するコマンドを受け取るので、より単純なものを使用できます

while ./runtest; do :; done

これにより、ゼロ以外./runtestの終了コードが返されたときにループが停止します(通常、これは失敗を示します)。

ただし、現在のソリューションをさらに簡素化するには、untilfail スクリプトを次のように変更する必要があります。

#!/bin/bash

while "$@"; do :; done

そして、すでに使用しているコマンドで呼び出すことができます:

untilfail ./runTest --and val1,val2 -o option1 "argument two"
于 2012-10-19T04:09:14.940 に答える
3

シェルの再試行ロジックがどこにでも重複しているシステムで同様の問題が発生したため、「再試行」と呼ばれるこれを解決するための専用ツールを作成しました。

retry --until=fail ./runtest

より複雑な例:

retry --until=fail --message="test succeeded" --delay=1 ./runtest

https://github.com/minfrin/retryから入手できるツール。

于 2020-01-14T08:00:12.753 に答える