2017-03-15 90 views
0

我想弄清楚如何使用bash並行運行四個python腳本,當其中一個失敗時,繼續運行那一個,直到它成功。 我現在所擁有的代碼是bash重複python腳本,直到成功

while ./test0.py; do :; done & 
while ./test1.py ; do :; done & 
while ./test2.py ; do :; done & 
while ./test3.py ; do :; done 

然而,這似乎是繼續運行,直到其中的一個失敗。

無論如何要實現繼續運行一個失敗的,直到它成功? (我已經讓它們可執行,所以我直接做了./)

+0

我看到你有一個解決辦法,但我個人會說,解決方案應該一直是python腳本本身裏面,所以你可以簡單地調用./test0.py&。凡示數的腳本中被抓作爲例外,然後重試 – grail

回答

2

使用until來顛倒測試。

until ./test0.py; do :; done & 
until ./test1.py; do :; done & 
until ./test2.py; do :; done & 
until ./test3.py; do :; done 
+0

看來它不會重新運行。是否有可能是我的python腳本的問題?我應該在python腳本中放置什麼以使退出狀態爲'失敗'?現在我只是打印'錯誤',當不是一切都通過(我試過,除了python) – botieeee

+1

你需要用非零代碼調用'sys.exit()'。 – Barmar

+0

明白了!我做了sys.exit(1),它工作順利。非常感謝! @Barmar – botieeee