使用原始输出我必须引用一些输出值。
echo [{"a" : "b"}] | jq-win64.exe --raw-output ".[] | \"Result is: \" + .a + \".\""
产生
Result is: b.
但是如何生成
Result is: "b".
不幸的是,它必须在从CMD文件内部调用的Windows上运行。
答案 0 :(得分:2)
您需要转义斜杠才能转义"
$ echo [{"a" : "b"}] | jq-win64.exe --raw-output ".[] | \"Result is: \\\"\" + .a + \"\\\".\""
Result is: "b".
答案 1 :(得分:1)
更少反斜杠的hacky解决方法可能是:
jq -r ".[] | \"Result is: \" + (.a|tojson)"
[修订反映OP的目标。]
答案 2 :(得分:0)
由于您尝试在双引号字符串中输出双引号,因此需要转义内部引号。为了逃避内部引号,你还需要逃脱逃逸的反斜杠。因此,必须输入文字双引号为\\\"
。你可以通过使用字符串插值而不是常规的字符串连接来做到这一点。
jq -r ".[] | \"Result is: \\\"\(.a)\\\".\""