我正在jq -n --arg KEY 'no leading zero' --arg VAL '.13452' '.+={$KEY:$VAL}'
bash 终端上尝试这个命令来产生输出{"no leading zero":".13452"}
。
但我收到以下错误:
jq: error: syntax error, unexpected ':', expecting '}' (Unix shell quoting issues?) at <top-level>, line 1:
.+={$KEY:$VAL}
jq: error: May need parentheses around object key expression at <top-level>, line 1:
.+={$KEY:$VAL}
jq: 2 compile errors
如何修复命令以便我{"no leading zero":".13452"}
使用 args 获得输出?
谢谢。
您可以使用字符串插值:
产生
您最常以
jq
三种方式之一向对象添加键和对应的值。. += { key: value }
),或者.key = value
) 中创建键并分配值,或者--arg
,您可以简单地使用$ARGS.named
并添加 (. += $ARGS.named
)。在第一种情况下,当使用变量时,键将被视为一个被评估的表达式,这意味着它需要在它周围有括号(错误消息直接暗示了这个事实):
例如:
(请注意,我们没有要添加的对象,所以
. +=
不需要)在第二种情况下,您应该使用以下
.[$key]
语法:例如:
在第三种情况下,使用
例如:
(请注意,我们没有要添加的对象,所以
. +=
不需要)您也可以使用
jo
,在这种情况下,这使得语法更简单,或者至少是更短的命令:(
-s
确保将数字解释为字符串。)