Python 在shell脚本中插入包含双引号的字符串
我想以原始格式将json字符串从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_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
参数周围的双引号。另请参见