使用python以非交互方式输入shell脚本变量值
Shell脚本: 你好,上海使用python以非交互方式输入shell脚本变量值,python,bash,shell,subprocess,stdin,Python,Bash,Shell,Subprocess,Stdin,Shell脚本: 你好,上海 我想在python中调用Hello.sh,并以非交互方式填充变量“name”。如何做到这一点?您应该能够Popen。与子流程进行通信: from subprocess import Popen,PIPE p = Popen(['bash','./Hello.sh'],stdin=PIPE,stderr=PIPE,stdout=PIPE) stdout_data,stderr_data = p.communicate("Hello World!\n") +1月1日。
我想在python中调用Hello.sh,并以非交互方式填充变量“name”。如何做到这一点?您应该能够
Popen。与子流程进行通信:
from subprocess import Popen,PIPE
p = Popen(['bash','./Hello.sh'],stdin=PIPE,stderr=PIPE,stdout=PIPE)
stdout_data,stderr_data = p.communicate("Hello World!\n")
+1月1日。一种更为“贝壳式”的方法是:
import subprocess
the_name = 'the_name'
myproc = subprocess.Popen(['echo %s | bash Hello.sh' % the_name], stdin = subprocess.PIPE, stdout = subprocess.PIPE, shell=True)
out, err = myproc.communicate()
print out
对于shell=True
,我认为最好传递一个字符串,而不是一个列表。@mgilson当shell=True
时:如果args是一个字符串,该字符串指定通过shell执行的命令。如果args是一个序列,则第一项指定命令字符串,任何附加项都将被视为shell本身的附加参数。所以这并不重要。谢谢,它按照我想要的方式工作。这和你的一样。
import subprocess
the_name = 'the_name'
myproc = subprocess.Popen(['echo %s | bash Hello.sh' % the_name], stdin = subprocess.PIPE, stdout = subprocess.PIPE, shell=True)
out, err = myproc.communicate()
print out