我想运行这个多行shell命令:
echo 'a=?'
read a
echo "a=$a"
从python脚本,使用subprocess.call()
方法。
我写了这个,在test.py
文件:
import shlex, subprocess
args = ["echo", 'a=?',"read", "a", "echo", "a=$a"]
subprocess.call(args)
,当我执行它时,我在终端有这个报告:
Armonicus@MyMacs-iMac MyNewFolder % python test.py
a=? read a echo a=$a
这至少与我所期望的不太接近。有人能帮帮我吗,拜托?
你的方法有几个问题。
首先,如果您想做的是提示用户从命令行输入,那么您可以使用Python内置程序而不是子进程:
a = input('a=?')
print(a)
如果您确实希望调用具有多个命令的子进程,则需要对每个命令进行单独的调用,或者调用shell并在其中执行命令。例如:
subprocess.call("echo 'a=?'; read a; echo $a", shell=True)