我有一个JSON文档中的shell脚本,我想用Python执行它。在
下面是我的JSON文档-{"script":"#!/bin/bash echo Hello World"}
我将反序列化上面的JSON文档,并提取其中的脚本部分,即实际的shell脚本,然后我需要从Python中执行该shell脚本。下面是我的代码,它将反序列化JSON文档并从中提取shell脚本。在
^{pr2}$
现在如何用相同的代码从Python执行shell脚本?在执行了上面的shell脚本之后,它应该响应helloworld
更新:-
这是我尝试过的方法,但在向shell脚本添加新行之后,它不起作用-#!/usr/bin/python
import subprocess
import json
jsonStr = '{"script":"#!/bin/bash echo Hello World \n"}'
j = json.loads(jsonStr)
print j['script']
print "start"
subprocess.call(j['script'], shell=True)
print "end"
以下是我得到的错误-Traceback (most recent call last):
File "shelltest.py", line 8, in
j = json.loads(jsonStr)
File "/usr/lib/python2.7/json/__init__.py", line 326, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Invalid control character at: line 1 column 40 (char 40)