提问人:grobian 666 提问时间:11/15/2023 更新时间:11/15/2023 访问量:29
jq argjson 不适用于变量中的字符串
jq argjson does not work with string from variable
问:
我正在尝试使用 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}'
收益 率 jq:传递给 --argjson 的 JSON 文本无效
我做错了什么?
干杯 戈登
答:
1赞
Botje
11/15/2023
#1
您的 shell 正在解释双引号并将裸字符串传递给 。jq
定义输入的正确方法是添加一个额外的引号级别,使双引号成为值的一部分:
f='"teststring"'
jq -n --argjson a "${f}" '{"test":$a}'
如图所示,您还需要在 of 的用法周围加上引号,以防它包含空格。$f
评论
1赞
peak
11/15/2023
或者干脆使用 --arg,例如jq -n --arg a "$f" ....
0赞
grobian 666
11/15/2023
非常感谢!它有效!
0赞
Botje
11/15/2023
@ikegami 谢谢。我首先在没有引号的情况下在 zsh 上进行了测试,它有效,但 bash 不起作用$f
0赞
ikegami
11/15/2023
有趣!sh、bash、dash、ksh 都需要引号。惊讶于它在 zsh 中有所不同。(但我验证了这是真的:))
评论
"teststring"