bash jq:解析错误:无效的字符串:从U + 0000到U + 001F的控制字符必须转义

时间:2018-09-19 06:52:10

标签: bash shell jq

我有一个类似的功能:

getServers() {
    curl -s -X GET ...
}

输出是一个复杂的JSON字符串。我可以这样解析JSON:

serverId=$(getServers | jq -r ".[] | select(whatever...)")
echo $serverId

但是,如果我将函数调用的输出存储在变量中,则会出现错误:

servers=$(getServers)
echo $servers | jq .
# jq can not process this
# parse error: Invalid string: control characters from U+0000 through             
echo "$servers" | jq .
# does not work either

U + 001F必须在行...处转义

即使我$servers包含与函数调用相同的值,jq也无法对其进行处理。这是怎么回事?

  

$ jq --version
  jq-1.5

更新(answer)

使用注释中的提示(set -x),我注意到变量包含\r\n。使用https://stackoverflow.com/a/19345906/1927695,我可以解决此问题:

echo $servers | tr '\r\n' ' ' | jq .

错误提示,jq不喜欢控制字符。

0 个答案:

没有答案