2013-10-21 54 views
0

我使用openphoto從bash腳本中上傳照片。偶爾上傳失敗,但所有的命令都正確執行。 JSON結果提供了:因爲正在上載位於遠程服務器上,偶爾照片無法上傳到openphoto之前正確緩存文件在bash腳本中重複curl命令以獲得特定輸出

{ 
"message" : "oauth_problem=signature_invalid&debug_sbs=POST&http..., 
"code" : 403, 
"result" : null 
} 

上傳失敗。通常只需重複該命令即可正確執行。

我的bash循環如下所示:

while read i; 
do ./openphoto -p -X POST -h HOSTNAME -e /photo/upload.json \ 
-F"[email protected]$i" \ 
-F"tags=$(echo "$i"|cut -d'/' -f 7-|sed 's/\/[^/]*[jJ][pP][gG]//;s/\//,/g')"; 
done < files; 

我怎樣才能獲得的bash如果輸出包含的403「代碼」命令重複?

回答

0

如果輸出中包含 代碼403,bash如何獲得重複命令?

你可以done之前添加一行:

(($? == 403)) && command_to_execute 

或者,如果你想嘗試,直到它成功的命令,你可以說:

until (($? == 0)); do command_to_execute; done 
+0

@ftherese號插入上述在'done'語句之前的行;在'./openphoto ...'行之後。 – devnull

+0

,如果command_to_execute是完全相同的命令...如果我希望它只是繼續重試命令,直到它具有除「code」403之外的結果? – ftherese

+0

代替第二個例子中的== 0,說'!= 403'! – devnull

相關問題