1. ホーム
  2. バッシュ

[解決済み】シェルコマンドを失敗するまで何度も実行する?

2022-04-04 12:20:44

質問

を書きました。 ファジー 信頼性の低いテストに失敗する デバッグコードを追加しましたが、今度はデバッグ出力を収集するために、テストが失敗するまでテストを実行したいと思います。

使って実行できるようにテストをセットアップしました。

./runtest

私の現在の解決策は untilfail スクリプトを使用します。

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

では、使ってみてください。

untilfail ./runtest

もっと簡単な解決策はないのでしょうか?

どのように解決するのですか?

while は実行するコマンドを取るので、よりシンプルな

while ./runtest; do :; done

これは、ループを停止させるために ./runtest が返されます。 非ゼロ の終了コード(これは通常、失敗を意味します)。

しかし、現在の解決策をさらに単純化するには、untilfailスクリプトを次のように変更すればよいでしょう。

#!/bin/bash

while "$@"; do :; done

そして、すでに使っているどんなコマンドでも呼び出すことができます。

untilfail ./runTest --and val1,val2 -o option1 "argument two"