【问题标题】:linux bash script running multiple python运行多个python的linux bash脚本
【发布时间】:2012-11-21 11:10:55
【问题描述】:

我有 2 个 python 脚本 a.py 和 b.py 我想编写一个 bash 脚本来加载 a.py 而不是运行 b.py 直到 a.py 完成它的事情。 简单地说

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

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

【问题讨论】:

  • 这是自然行为,同步执行。如果你想要它(在后台运行 a 并立即启动 b)你应该在命令中附加一个 & 符号,例如python a.py&.

标签: python linux bash


【解决方案1】:
prompt_err() {

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

}

prompt_ok() {

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

}

status() {

if [ $1 -eq 0 ]; then

prompt_ok

else prompt_err

exit -1

fi

}

a.py

status

b.py

您可以使用上面的校验码。

如果 'a.py' 只完成了,那么它会处理 'b.py',否则它会以 'Error' 退出。

【讨论】:

【解决方案2】:

默认情况下,这将一个接一个地运行。


要检查 python a.py 是否成功完成作为运行 python b.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 

【讨论】:

  • 这可以超过两个吗?如果我也有 c.py,code python a.py && python b.py && python c.py code 或者必须单独为 c.py 做另一行?首先code python a.py && python b.pycode 然后codepython b.py && python c.pycode
  • 使用 && 会报错/跨度>
  • @StudentOfScience 如果你在做python a.py && b.py - 你能告诉我们你的脚本是什么样的以及你是如何调用它的吗?
  • 好的,不是要劫持线程,但它非常相关。如果 a.py 使用 print 命令记录一些内容并根据结果,我想调用 b.py 怎么办?我想最好在 a.py 中检查以便调用 b.py?代码为x = ser.readline() print "got '" + x + "'",所以如果收到 AT+OK 则调用 b.py。
  • 如果我有脚本怎么办:parent.pychild1.pychild2.pyreunion.py,我想先运行parent.py,然后同时运行child1.pychild2.py ,如果child1.pychild2.py都成功了,最后运行reunion.py
猜你喜欢
  • 2017-12-12
  • 2021-11-30
  • 2017-01-11
  • 1970-01-01
  • 1970-01-01
  • 2023-01-13
  • 1970-01-01
  • 2013-03-14
  • 1970-01-01
相关资源
最近更新 更多