Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在shell脚本中插入包含双引号的字符串_Python_Bash - Fatal编程技术网

Python 在shell脚本中插入包含双引号的字符串

Python 在shell脚本中插入包含双引号的字符串,python,bash,Python,Bash,我想以原始格式将json字符串从python代码传递到shell脚本,如 json_val = check_input_file['Item']['mappings']['S'] print(json_val) 上述代码的输出为: { "1": [ "skipColumn" ], "2": [ "firstname" ], "3&q

我想以原始格式将json字符串从python代码传递到shell脚本,如

json_val = check_input_file['Item']['mappings']['S']
print(json_val) 
上述代码的输出为:

{
    "1": [
        "skipColumn"
    ],
    "2": [
        "firstname"
    ],
    "3": [
        "lastname"
    ],
    "4": [
        "email"
    ],
    "5": [
        "skipColumn"
    ],
    "6": [
        "ipaddress"
    ]
}
现在我将
json\u val
传递给shell,就像:

init_script = '''#!/bin/bash 
       FOO="{0}"
       echo $FOO
        '''.format(json_val)
在FOO变量中,我得到了不带双引号的字符串,但我希望它与上面相同

我试过这样的东西

MAPPINGS=$(cat <<EOF
{"1":["skipColumn"],"2":["firstname"],"3":["lastname"],"4":["email"],"5":["skipColumn"],"6":["ipaddress"]}
EOF
)

MAPPINGS=$(cat您需要为shell使用转义
json_val
,否则在shell执行引号删除时,双引号将被删除

还需要将
$FOO
括在双引号中,否则在shell执行分词后,其内容中会丢失换行符

import shlex

init_script = '''
#!/bin/bash -
FOO={}
echo "$FOO"
'''.format(shlex.quote(json_val))

可能还会突出显示
echo
参数周围的双引号。另请参见