如果我echo a; echo b在bash中运行,结果将是两个命令都运行。但是,如果我使用子进程,则将运行第一个命令,打印出该行其余部分的全部内容。下面的代码回显a; echo b而不是a b,我如何才能运行两个命令?
echo a; echo b
a; echo b
a b
import subprocess, shlex def subprocess_cmd(command): process = subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE) proc_stdout = process.communicate()[0].strip() print proc_stdout subprocess_cmd("echo a; echo b")
您必须在子进程中使用shell = True,而不能使用shlex.split:
def subprocess_cmd(command): process = subprocess.Popen(command,stdout=subprocess.PIPE, shell=True) proc_stdout = process.communicate()[0].strip() print proc_stdout subprocess_cmd('echo a; echo b')
返回: