2017-03-15 85 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