我正在执行一组首先要求我调用bash
的命令。我试图通过编写Python脚本来自动执行这些命令。我的第一个命令显然需要bash
,所以我运行
p = subprocess.call(['bash'])
它启动bash shell没问题。
我遇到问题的地方是尝试在bash环境中执行剩余的代码。我想也许需要进程通信(即重定向stdout,如
p0 = subprocess.Popen(cmd, stdout=subprocess.PIPE)
p1 = subprocess.Popen(['bash'], stdin=p0.stdout)
p1.communicate()
)但是管道似乎没有解决我的问题。
如何编写此脚本以模仿以下顺序Linux命令?
$ bash
$ cmd1
$ cmd2
...
我正在使用Ubuntu 14.04和Python 2.7.6。
提前感谢您的指导!
答案 0 :(得分:1)
import subprocess
def bash_command(cmd):
subprocess.Popen(cmd, shell=True, executable='/bin/bash')
bash_command('[your_command]')
答案 1 :(得分:1)
您无需单独调用run bash。你可以运行类似的东西:
p1 = subprocess.call(['cmd1'])
p2 = subprocess.call(['cmd2'])
如果由于某种原因必须运行bash(例如,命令包含bash语句),则可以从bash -c "cmd1; cmd2"
运行subprocess.call()
。
编辑:正如Busturdust指出的那样,你也可以尝试设置shell=True
,但是使用sh而不是bash。但这对你来说已经足够了。