2012-10-19 14 views
113

私はfuzzyテストを信頼性のない方法で作成しました。いくつかのデバッグコードを追加しましたが、今はテストが失敗するまでテストを実行して、デバッグ出力を収集できます。シェルコマンドが失敗するまで繰り返し実行しますか?

私が使用してそれを実行することができますので、私は、セットアップのテストをしました:

./runtest 

を私の現在のソリューションは、untilfailスクリプト記述することです。そして、それを使用

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

を:

untilfail ./runtest 

もっと簡単なソリューションはありますか?あなたは./runtest(通常、障害の指標である)ゼロ以外の終了コードを返すとき、これがループを停止します

while ./runtest; do :; done 

単純に使用できるように

+7

サイドノート:「$ @」と覚えておいてください。 – jordanm

答えて

185

whileは、実行するコマンドを取ります。

+17

'['はコマンドであることも指摘しておきます。新規ユーザーの間では、 '['は 'if'と' while'構文の一部です。 – jordanm

+1

失敗する前に何回実行したのですか? – GrantJ

+0

@GrantJ:そういうものを追加するためのPythonスクリプトを書いた方が簡単だろう。 –

5

あなたはシェルスクリプトや関数に複雑なパイプラインをラップしたくない場合、これは動作します:

while true; do 
    curl -s "https:..." | grep "HasErrors.:true" 
    if [[ "$?" -ne 0 ]]; then 
    break 
    fi 
    sleep 120 
done 

この場合、HTTP要求は常に200を返すだけでなく、持っているいくつかのJSONを返します属性 "HasErrors":エラーがある場合はtrue。

関連する問題