我想将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_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
)
但这不是我想要的。
我想念什么吗?
您需要转义json_val
以使用Shell,否则在Shell执行引用删除时会删除双引号。
还必须$FOO
用双引号引起来,否则在shell进行单词拆分后,您的内容将失去换行符。
import shlex
init_script = '''
#!/bin/bash -
FOO={}
echo "$FOO"
'''.format(shlex.quote(json_val))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句