Python:使用参数(变量)执行shell脚本,但是在shell脚本中未读取参数

Python:使用参数(变量)执行shell脚本,但是在shell脚本中未读取参数,第1张

Python:使用参数(变量)执行shell脚本,但是在shell脚本中未读取参数

问题出在哪里

shell=True
。删除该参数,或将所有参数作为字符串传递,如下所示:

Process=Popen('./childdir/execute.sh %s %s' % (str(var1),str(var2),), shell=True)

Shell只会将您在第一个参数中提供的参数

Popen
传递给流程,因为它会解释参数本身。看到类似的问题在这里回答。实际发生的情况是您的shell脚本没有参数,因此$ 1和$ 2为空。

Popen将从python脚本继承stdout和stderr,因此通常不需要为Popen提供

stdin=
and
stderr=
参数(除非您使用输出重定向运行该脚本,例如
>
)。仅在需要读取python脚本中的输出并以某种方式对其进行 *** 作时,才应执行此 *** 作。

如果您只需要获取输出(并且不介意同步运行),则建议您尝试使用

check_output
,因为获取输出比
Popen

output = subprocess.check_output(['./childdir/execute.sh',str(var1),str(var2)])print(output)

请注意,

check_output
check_call
shell=
参数规则与相同
Popen



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5632088.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存