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

我想将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
)

但这不是我想要的。

我想念什么吗?

oguz ismail

您需要转义json_val以使用Shell,否则在Shell执行引用删除时会删除双引号。

还必须$FOO用双引号引起来,否则在shell进行单词拆分后,您的内容将失去换行符。

import shlex

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

在线演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

bash shell脚本从包含引号的字符串中获取子字符串

捻转双引号中未包含的逗号字符串

基本-如何在字符串中包含双引号?

解析包含双引号的字符串

C#在Razor中使用字符串插值转义双引号?

C#字符串插值转义的双引号和花括号

为什么字符串插值只适用于双引号 PHP

从JSON字符串值中删除双引号

回声字符串,包含输入值的单引号和双引号

在.csv文件中使用shell脚本将逗号分割成字符串,但是忽略双引号中的逗号?

保存包含单引号和双引号的字符串?

字符串中的双引号转义

在带引号的字符串csv文件中包含多个双引号

请给RegEx帮助-用引号引起来的字符串中包含双引号

如何在bash脚本中转义双引号字符串中的单引号?

在模型的属性中包含字符串插值

Shell执行中的Ruby字符串插值

如何将字符串转换为仅包含双引号中的字符的数组

提取双引号中的字符串(字符串中有双双引号)

包含双引号和逗号的CSV解析字符串

将包含双引号的字符串转换为 json

如何加载包含双引号 (") 的字符串的 json 文件

尝试返回包含双引号的字符串

替换字符串中的单引号和双引号

MATLAB中的字符串索引:单引号与双引号

替换字符串中的单引号和双引号

字符串中的单引号和双引号的grep

如何从字符串中删除单引号或双引号?

在Liferay首选项中存储包含双引号的字符串