我的JSON文档jsonStr
中有一个shell脚本,我可以使用Python子进程模块执行它,它运行正常。
下面是我的Python脚本,如果我执行shell脚本而不传递任何内容,它可以正常工作 -
import subprocess
import json
testing = "HelloWorld"
jsonStr = '{"script":"#!/bin/bash \\n STRING=\'Hello World\' \\n echo $STRING \\n"}'
j = json.loads(jsonStr)
print "start"
subprocess.call(j['script'], shell=True)
print "end"
现在有没有办法从Python脚本中将变量值传递给json文档中的shell脚本?意思是我需要将testing
值传递给我的shell脚本,然后在从子进程模块执行后从shell脚本中打印出testing
的值。
这可能吗?
答案 0 :(得分:0)
与the docs类似,请在env
参数中为子流程提供环境变量。请注意,提供参数会替换整个环境;如果您希望它们可用,您将需要提供现有值。
答案 1 :(得分:0)
尝试此命令:
subprocess.call(j['script', str(var1), str(var2)], shell=True)
答案 2 :(得分:0)
你不能用这个吗?
import subprocess
import json
testing = "HelloWorld"
jsonStr = '{"script":"#!/bin/bash \\n STRING=\'%VP%\' \\n echo $STRING \\n"}'.replace('%VP%', testing)
j = json.loads(jsonStr)
print "start"
subprocess.call(j['script'], shell=True)
print "end"
在JSON中,您可以拥有占位符,并且可以替换该占位符,而不是动态地将变量传递给它。