从python传递变量到shell

时间:2018-01-18 14:57:49

标签: python python-3.x shell subprocess

我想将变量从python传递给shell脚本。我的代码如下所示。

Object_Id=12
Class_Name='My_Class'
Folder_Path='/My_Folder'

output=subprocess.check_output(['./execute.sh, 'Object_Id', 'Class_Name', "shell=True"])
print(output)

execute.sh脚本只是简单的echo语句

echo $1
echo $2

输出

 Object_Id 
 Class_Name

脚本将args作为文字字符串,但我想获取变量的值。

2 个答案:

答案 0 :(得分:1)

您的RefreshScreen();调用需要将命令及其参数作为check_outputliststr API本身的参数分开。你不应该传递变量的名称(你的命令根本不知道check_output意味着什么,并且无法回到Python过程中以确定是否理解它),而是变量本身(和你的报价不匹配,需要修复)。真的,你根本不需要Object_Id,所以你可以这样做:

shell=True

如果output = subprocess.check_output(['./execute.sh', str(Object_Id), Class_Name]) 由于某种原因很重要,可以通过传递表示shell命令的字符串来完成:

shell=True

请注意,import shlex output = subprocess.check_output('./execute.sh {} {}'.format(shlex.quote(Object_Id), shlex.quote(Class_Name)), shell=True) shell=True的单独参数,不是命令本身的一部分(第一个位置参数)。

答案 1 :(得分:-1)

它看起来像是将args作为字符串而不是变量,因为你用''将其括起来删除它们应该修复它