用 jq 从 JSON 里拿字符串时,默认输出还是 JSON 字符串,会带引号。写 shell 小脚本时通常更想要纯文本,可以加 -r。
环境:jq 1.6+。随便建个文件试一下:
mkdir jq-raw-demo && cd jq-raw-demo
printf '{"name":"meshboard","port":3000}
' > app.json
jq '.name' app.json
jq -r '.name' app.json
第一行会输出:
"meshboard"
第二行是:
meshboard
如果要拼到变量里,-r 会少很多转义上的麻烦:
name=$(jq -r '.name' app.json)
printf 'app=%s\n' "$name"
拿数字、对象这些类型时就不用硬加,按输出要给谁用来选就行。