2012-03-21 88 views
0

これは初めてのことですので、私に同行してください。 whileループでcurlコマンドを使用しようとしていますが、ほとんど成功しませんでした。 私はループの外側でcurlコマンドを使用して応答を得ることができますが、whileループに当たると、curlコマンドは無視され、最初の出力がファイルに貼り付けられ、ループが終了するとループが切断されません。 私が以前に実行していたコマンドは、Webページに「2」の値を出力しました。終了したことを意味し、値「0,1または3」は、終了しなかったか、エラーなどを意味します。 "2"の戻り値はループにある程度の時間を要する可能性があります。 "0,1,2,3"の値はハードコードされており、変更できません。 プログラムの実行をキャンセルすると、ファイルは更新されますが、ループプロセスでは表示されないため、コードが機能します。ループに詰まっていて、検索できないため、ウェブページを再訪しません。 「2」 任意のアイデアください ここで「ラウンド」変数は一度だけ前にwhileループを入力してください更新されますのでですwhileループでcurlコマンドを使用する

curl --location http://$host_name/config-builder-test-app/jobStateResolver?jobId=$jobid > ./jobstate.txt 

round=`grep -E "1|0|3" jobstate.txt` 
while [ $round ] 
do 
curl --location http://$host_name/config-builder-test-app/jobStateResolver?jobId=$jobid > ./jobstate.txt 

echo "Waiting for confirmation of the completed build:"; 
sleep 5 
done 
echo "Successful build for $inputb ID $ID"; 

答えて

0

以下のコードのsnippitです。 whileループでは、正しい結果を得るためにcurlを実行した後に更新する必要があります。

0

通常、ループ構築ではCURLは使用できません。各反復ごとに、別のHTTPDセッションが使用されます。ただし、 '古い'セッションのスタック上のデータはまだリリースされていません。 HTTPDセッションの数が悪いので、スタックを解放するためのチャネル変数の設定を解除することはできません。 1つのメインHTTPDを使用し、4つのサブプロセスを生成します。したがって、5回の反復後にファーを使用すると、ループが崩壊します。

この問題には2つの解決策があります。 「古い」HTTPDセッションがなくなるまで待つか、通常は秒です。 または、 '新しい'反復が '古い'、通常はmsecsに続いて十分高速である

すべてのCURL出力を処理する前に単一のメモリ配列に連結しました。

関連する問題