我在shell脚本中有两个变量,每个变量都包含一个JSON数据。
我想使用命令
合并它们jq '.' $var1 $var2
其中echo $var1 => {"key1": "value1"}
echo $var2 => {"key2": "value2"}
但它不起作用,但是当我分别将这些变量的内容写入file1和file2时,它工作正常jq '.' file1.json file2.json
它完美地运作。
有关如何将多个变量传递给jq命令的任何帮助将不胜感激。
答案 0 :(得分:1)
如果通过“合并”表示jq的add
之类的东西,那么你可以简单地写一下:
jq -n "$var1 + $var2"
更一般地说,如果你的jq支持--argson命令行选项,那么你可以使用它;否则,您可以使用-arg,但是需要一些小心来进行任何所需的转换。在任何一种情况下,您可能还需要使用-n命令行选项。
如果您使用的是shell,例如bash,则另一组选项基于进程替换,例如
jq -s add <(echo "$var1") <(echo "$var2")
如果echo
不合适,您可以使用其他替代方法(例如printf)。
如果过程替换过度,那么另一个选项,就像@chepner所指出的那样,只是使用“$ var1 $ var2”,例如
jq -s add "$var1 $var2"
最后,如果已导出shell变量(即,如果它们可用作“环境”变量),那么您可以使用jq的env
函数:env.var1 + env.var2