Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中运行bash脚本并等待shell命令完成_Python_Windows_Bash_Cygwin_Wait - Fatal编程技术网

在python中运行bash脚本并等待shell命令完成

在python中运行bash脚本并等待shell命令完成,python,windows,bash,cygwin,wait,Python,Windows,Bash,Cygwin,Wait,我有与Python3.x相同的问题。我尝试了提供的解决方案,但对我无效 Python不会等待bash脚本完成并在终止bash脚本之前打印“end” 我在窗户上,把cygwin装进去了 callBash.py: import subprocess print("start") subprocess.call("sleep.sh",shell=True) print("end") #!/bin/bash sleep 10 睡眠。sh: import subprocess print("start

我有与Python3.x相同的问题。我尝试了提供的解决方案,但对我无效

Python不会等待bash脚本完成并在终止bash脚本之前打印“end”

我在窗户上,把cygwin装进去了

callBash.py:

import subprocess
print("start")
subprocess.call("sleep.sh",shell=True)
print("end")
#!/bin/bash
sleep 10
睡眠。sh:

import subprocess
print("start")
subprocess.call("sleep.sh",shell=True)
print("end")
#!/bin/bash
sleep 10

您从不检查
subprocess.call的返回值,因此您的脚本可能无法正常启动,可能是因为路径/CWD无效或权限或其他原因

改为使用,以便在脚本无法运行时引发异常。例外情况并不容易被忽略


另外,如果您有Python 3,它会更新,并且通常更易于使用。

因为您的脚本正在执行。。。没什么,你确定你在运行脚本吗?请改为尝试
检查\u call
。它正在运行。我看到控制台等待10秒,然后关闭。你在Windows上吗?首先,您是如何运行bash脚本的?如果是通过Cygwin实现的,没有Cygwin版本的Python就无法实现。如果是通过MSYS,您可能希望显式调用MSYS
bash
,并使用
sleep.sh
作为其参数(并且不使用
shell=True
)。哦,您正在使用windows。。。与哪些程序.sh文件关联?在控制台中尝试“cmd/c sleep.sh”,看看它是否会阻止…您应该在问题中指定“windows”。阅读本文,您将看到一节讨论如何创建“startupinfo”对象以传递给Popen构造函数。看起来你的代码会变得更复杂。但OP表示它正在运行,与当前进程分离/后台。不是我的DV顺便说一句,但也不是答案。哦,我误解了那部分。在这种情况下,我将把答案留在这里,作为一个半相关的建议。