我想将变量从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作为文字字符串,但我想获取变量的值。
答案 0 :(得分:1)
您的RefreshScreen();
调用需要将命令及其参数作为check_output
或list
与str
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作为字符串而不是变量,因为你用''
将其括起来删除它们应该修复它