如何将JSON文件内容拼接进Shell命令的字符串参数中?
解决shell命令读取JSON文件拼接参数的问题
错误原因
你之前的写法mycommand --environment '{"Variables":' + cat vars.json + '}'在shell里不成立,原因如下:
- shell中字符串拼接不需要
+号,直接连接内容即可 cat vars.json会被当作独立命令而非插入到参数字符串里,导致shell把+、cat、vars.json这些都当成mycommand的额外参数,因此出现未知选项的错误
正确实现方式
方法1:直接用命令替换拼接字符串
使用$(cat vars.json)获取文件内容,嵌入到参数字符串中:
mycommand --environment '{"Variables":'"$(cat vars.json)"'}'
引号逻辑说明:
- 单引号包裹
{"Variables":部分(单引号内的内容不会被shell解析) "$(cat vars.json)"用双引号包裹命令替换结果,确保内容作为整体传递- 最后用单引号闭合
}部分
方法2:用printf构造完整参数
先通过printf生成完整的JSON字符串,再传递给命令:
mycommand --environment "$(printf '{"Variables":%s}' "$(cat vars.json)")"
这种方式更直观,适合复杂的字符串拼接场景。
验证效果
如果vars.json内容是{"var1":"new_val1","var2":"new_val2"},上述命令最终会生成和原命令完全一致的参数:{"Variables":{"var1":"new_val1","var2":"new_val2"}}
内容的提问来源于stack exchange,提问作者ServerBloke
相关产品推荐
相关产品推荐

