我在 shell 脚本中有两个变量,每个变量都包含一个 JSON 数据。
我想用命令合并它们
jq '.' $var1 $var2
哪里 echo $var1 => {"key1": "value1"}
echo $var2 => {"key2": "value2"}
但它不起作用,但是当我将这些变量的内容分别写入 file1 和 file2 时,它工作正常 jq '.'文件1.json 文件2.json
它工作得很好。
任何有关如何将多个变量传递给 jq 命令的帮助将不胜感激。
最佳答案
如果“合并”是指类似于 jq 的 add
,那么您可以简单地写:
jq -n "$var1 + $var2"
更一般地说,如果您的 jq 支持 --argson 命令行选项,那么您可以使用它;否则,您可以使用 —arg,但需要注意进行任何所需的转换。在任何一种情况下,您可能还想使用 -n 命令行选项。
如果您使用的是 bash 等 shell,则另一组选项基于进程替换,例如
jq -s add <(echo "$var1") <(echo "$var2")
如果您的 echo
不合适,您可以使用其他替代方案(例如 printf)。
如果进程替换是矫枉过正,那么正如@chepner 指出的那样,另一种选择是简单地使用“$var1 $var2”,例如
jq -s add "$var1 $var2"
最后,如果 shell 变量已经导出(即,如果它们可用作“环境”变量),那么您可以使用 jq 的 env
函数:env.var1 + env。变量2
关于json - 将多个变量而不是文件传递给 jq 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47693714/