在运行Shell脚本时,如何在python的子过程调用中传递多个参数?
import subprocess
subprocess.check_call('./test_bash.sh '+arg1 +arg2, shell=True)
这会打印出作为一个参数串联的arg1和arg2。我需要将3个参数传递给我的shell脚本。
答案 0 :(得分:2)
它当然是串联的,因为您没有在它们之间插入空格。 Quickfix是(使用format
,如果某些参数包含空格,则可能会失败)
subprocess.check_call('./test_bash.sh {} {}'.format(arg1,arg2), shell=True)
您可以尝试(功能更强大,无需引用空格,自动生成命令行):
check_call(['./test_bash.sh',arg1,arg2],shell=True)`
(由于shell=True
和参数列表一起使用,因此不确定它是否在所有系统上都有效)
或删除shell=True
并显式调用该外壳程序(可能会失败,因为与shell=True
不同,没有考虑 shebang ,但值得放弃shell=True
,可能会注入代码等问题):
check_call(['sh','-c','./test_bash.sh',arg1,arg2])