Linux Bash脚本运行多个Python

21

我有两个Python脚本a.py和b.py,我想编写一个bash脚本,在a.py完成其操作之前加载a.py而不运行b.py。

#!/usr/bin/env bash
python a.py
python b.py

但这太幼稚了,我要检查a.py是否完成...我该怎么做?


3
这是自然行为,同步执行。如果您希望它不同(在后台运行a并立即启动b),则应将一个&符号附加到命令上,例如 python a.py& - Morten Jensen
2个回答

47

默认情况下,这些命令将自动顺序执行。


要检查运行python b.py的必要条件之一python a.py已成功完成,您可以执行以下操作:

#!/usr/bin/env bash
python a.py && python b.py
相反,尝试运行python a.py,仅当python a.py未成功终止时才运行'python b.py':
#!/usr/bin/env bash
python a.py || python b.py
同时作为后台进程运行它们的方法是:
#!/usr/bin/env bash
python a.py &
python b.py &
(回复评论)-您可以将此链接用于连续执行多个命令,例如:

python a.py && python b.py && python c.py && python d.py 

1
这个是可以用于超过两个的吗?如果我也有c.py,是codepython a.py && python b.py && python c.py code还是要再单独写一行c.py?先是codepython a.py && python b.pycode然后是codepython b.py && python c.pycode - StudentOfScience
使用 && 运算符会出现错误 ./bash.sh: 第47行: b.py: 命令未找到,但如果我将其作为 python b.py 运行,则可以正常运行 b.py :( - StudentOfScience
@StudentOfScience 如果你在执行 python a.py && b.py,能否展示一下你的脚本长什么样子,以及你是如何调用它的? - sampson-chen
好的,不想打断这个主题,但它与之相关。如果a.py使用print命令记录了一些内容,并且基于结果,我想调用b.py怎么办?我想最好在a.py中检查以便调用b.py?代码如下:x = ser.readline() print "got '" + x + "'",所以如果收到AT+OK,则调用b.py。 - marciokoko
如果我有四个脚本:parent.pychild1.pychild2.pyreunion.py,我想让parent.py先运行,然后同时运行child1.pychild2.py,最后如果child1.pychild2.py都成功运行,则运行reunion.py - Jason Goal

0
prompt_err() {

echo -e "\E[31m[ERROR]\E[m"

}

prompt_ok() {

echo -e "\E[32m[OK]\E[m"

这段代码与编程有关。

}

状态() {

如果 [ $1 -eq 0 ]; 然后

提示_成功

否则 提示_错误

退出 -1

结束

}

a.py

状态

b.py

您可以使用上面的检查代码。

如果仅完成'a.py',则会处理'b.py',否则将以“错误”退出。


非常欢迎!您还可以访问http://gettechgo.wordpress.com/2012/12/05/exit-status-shell-scripts/以获取更多信息。 - Mansab Uppal
@MansabUppal,每当您链接到自己的网站时,必须进行披露。 - Andrew Barber
@AndrewBarber 谢谢 :) 我会记下来的! - Mansab Uppal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接