栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/626203.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号