jq argjson不适用于变量中的字符串

xe55xuns  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(109)

我想用jq创建一个json

f=1
jq -n --argjson a ${f} '{"test":$a}'

字符串

f="1"
jq -n --argjson a ${f} '{"test":$a}'


jq -n --argjson a "teststring" '{"test":$a}'


工作正常

f="teststring"
jq -n --argjson a ${f} '{"test":$a}'


yields jq:传递给--argjson的JSON文本无效
我做错了什么?
干杯戈登

mum43rcc

mum43rcc1#

您的shell正在解释双引号并将空字符串传递给jq
定义输入的正确方法是添加一个额外的引用级别,使双引号成为值的一部分:

f='"teststring"'
jq -n --argjson a "${f}" '{"test":$a}'

字符串
如图所示,您还需要在$f的使用前后加上引号,以防它包含空格。

相关问题