0

我有一个示例 json 响应,如下所示,我试图在 shell 脚本中使用 jq 进行解析。[{"id":1,"notes":"Demo1\nDemo2"}]

这是我试图通过它访问 shell 脚本中的注释的命令。

value=($(curl $URL | jq -r '.[].notes')) 

当我回显“$value”时,我只得到 Demo1。如何获得确切的值: Demo1\nDemo2 ?

4

1 回答 1

1

澄清一下,注释字段中没有反斜杠n\n是 JSON 编码文字换行符的方式,因此您应该期望的值是:

Demo1
Demo2

您看到的问题是因为您在空格上拆分了值并创建了一个数组。每个值都可以通过索引访问:

$ cat myscript
data='[{"id":1,"notes":"Demo1\nDemo2"}]'
value=($(printf '%s' "$data" | jq -r '.[].notes'))
echo "The first value was ${value[0]} and the second ${value[1]}"

$ bash myscript
The first value was Demo1 and the second Demo2

要将其作为简单字符串获取,请从以下位置删除括号value=(..)

$ cat myscript2
data='[{"id":1,"notes":"Demo1\nDemo2"}]'
value=$(printf '%s' "$data" | jq -r '.[].notes')
echo "$value"

$ bash myscript2
Demo1
Demo2
于 2018-06-09T03:39:07.623 回答