Bash
bash腳本:如果返回錯誤則重複命令
如果返回錯誤,我想創建一個重複 ncftp 傳輸的循環。
我有點不確定如何在循環中使用退出程式碼變數。像這樣的東西會起作用嗎?
until [$? == 0]; do ncftpput -DD -z -u user -p password remoteserver /remote/dir /local/file done
我在 serverfault 的其他地方找到了這個優雅循環的基礎。事實證明不需要保存退出程式碼,因為您可以直接在命令本身上進行測試;
until ncftpput -DD -z -u user -p password remoteserver /remote/dir /local/file; do echo Tansfer disrupted, retrying in 10 seconds... sleep 10 done
幾乎。您可能最好將返回值保存為變數,以便您可以在循環之前預先設置它。否則會受到上次執行命令的影響。
您可能還想在
sleep
其中懸掛一個以阻止它過快重生。RET=1 until [ ${RET} -eq 0 ]; do ncftpput -DD -z -u user -p password remoteserver /remote/dir /local/file RET=$? sleep 10 done