我有一个示例json响应,如下所示,我试图在shell脚本中使用jq进行解析。"select sum(service.price) as sum_price from (reservations inner join
service on reservation.Res_ser_D = service.Ser_ID inner join personnel
on reservation.Res_per_ID = personnel.Per_ID ) where
reservation.Res_cus_ID = '$userID'"
这是我尝试访问shell脚本中的注释的命令。
[{"id":1,"notes":"Demo1\nDemo2"}]
当我回应“$ value”时,我只得到Demo1。如何获得准确的值:Demo1 \ nDemo2?
答案 0 :(得分: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