我有一個簡單的腳本來從遠程服務器獲取數據的過程中它使用rsync
產生:有沒有一種簡單的方法來測試bash中一組命令的退出狀態?
while :
do
rsync -avz --remove-source-files -e ssh [email protected]:path/to/foo* ./
rsync -avz --remove-source-files -e ssh [email protected]:path/to/bar* ./
rsync -avz --remove-source-files -e ssh [email protected]:path/to/baz* ./
rsync -avz --remove-source-files -e ssh [email protected]:path/to/qux* ./
sleep 900 #wait 15 minutes, try again
done
如果沒有文件,rsync
返回退出狀態12(顯然)。如果無上面的調用rsync
找到任何數據,我想打破循環(生成數據的過程可能已退出)。爲了減輕任何困惑,我做了而不是想要從循環中突破,如果即使是1的rsync
進程成功。
在bash中有一個簡潔的方法嗎?
退出狀態12似乎與協議數據流中的錯誤有關。你想退出任何*非零退出狀態(來自所有'rsync'進程)的循環嗎? – ezod
@ezod - 我認爲任何非零退出狀態都足夠讓我打破(但只有當它們都不爲零時)。 – mgilson