使用python脚本中的参数执行shell脚本

使用python脚本中的参数执行shell脚本,python,shell,Python,Shell,我的Shell脚本是这样从命令行执行的 ./pro.sh "Argument1" 我现在从python脚本中调用它,如下所示 subprocess.call(shlex.split('bash pro.sh "Argument1"')) 如何将Argument1的值作为变量传递。脚本的参数可以是任何字符串。我如何做到这一点 使用子流程调用shell脚本 subprocess.Popen(['run.sh %s %s' % (var1, var2)], shell = True) 使用子流程

我的Shell脚本是这样从命令行执行的

./pro.sh "Argument1"
我现在从python脚本中调用它,如下所示

subprocess.call(shlex.split('bash pro.sh "Argument1"'))

如何将Argument1的值作为变量传递。脚本的参数可以是任何字符串。我如何做到这一点

使用子流程调用shell脚本

subprocess.Popen(['run.sh %s %s' % (var1, var2)], shell = True)

使用子流程调用shell脚本

subprocess.Popen(['run.sh %s %s' % (var1, var2)], shell = True)
你可以用

subprocess.Popen(["bash", "pro.sh", "Argument1"])
如果字符串参数是多个单词,那么它应该可以正常工作

subprocess.Popen(["bash", "pro.sh", "Argument with multiple words"])
只要在传递给
subprocess.Popen()
的列表中,多个单词在一个字符串中,它就被视为命令参数列表中的一个参数

除非有充分的理由,否则不应使用
shell=True
。如果您不十分小心如何使用它,它可能会成为一个安全问题

您可以使用

subprocess.Popen(["bash", "pro.sh", "Argument1"])
如果字符串参数是多个单词,那么它应该可以正常工作

subprocess.Popen(["bash", "pro.sh", "Argument with multiple words"])
只要在传递给
subprocess.Popen()
的列表中,多个单词在一个字符串中,它就被视为命令参数列表中的一个参数


除非有充分的理由,否则不应使用
shell=True
。如果您不十分小心如何使用它,它可能会成为一个安全问题

我的论点是一串多个词。当我使用它时,只使用字符串的第一个字。你必须将字符串存储在变量var1、var2中,然后执行脚本。我已经这样做了。它只读var1的第一个单词。Var1包含多个WordsHok,那么它应该使用subprocess.Popen([“bash”、“.sh file”、“multiple Arguments”])我的参数是由多个单词组成的字符串。当我使用它时,只使用字符串的第一个字。你必须将字符串存储在变量var1、var2中,然后执行脚本。我已经这样做了。它只读var1的第一个单词。Var1包含多个WordsHok,那么它应该使用subprocess.Popen([“bash”、“.sh file”、“multiple Arguments”])