如何在传递输入参数后从Python执行shell脚本

时间:2013-12-24 09:10:08

标签: python linux bash shell ubuntu

我的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的值。

这可能吗?

3 个答案:

答案 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中,您可以拥有占位符,并且可以替换该占位符,而不是动态地将变量传递给它。