您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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=andstderr=参数(除非您使用输出重定向运行该脚本,例如>)。仅在需要读取python脚本中的输出并以某种方式对其进行操作时,才应执行此操作。

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

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

请注意,check_outputcheck_callshell=参数规则与相同Popen

python 2022/1/1 18:44:11 有288人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶