Дамп Json ответ на переменную bash - PullRequest
1 голос
/ 30 апреля 2020

У меня есть следующий вывод

[
 "notimportant",
     [
       "val1",
       "val2",
       ...,
       "valn"
     ]
]

Я пытаюсь сохранить каждое значение в bash строке, используя jq, я попробовал это

out=''
req=$(curl -s $url)
len=$(echo $req | jq length ) 
for (( i = 0; i < $len; i++ )); do
    element=$(echo $req | jq '.[1]' | jq --argjson i "$i" '.[$i]')
    out=${element}\n${out}
done

, которое кажется неуклюжим и также имеет низкую производительность. Я пытаюсь сбросить значения сразу, не зацикливаясь на всех элементах

Ответы [ 2 ]

2 голосов
/ 30 апреля 2020

Хотите ли вы, чтобы значения разделялись символами TAB или NEWLINE в одной переменной? Функция @tsv полезна для управления выводом :

outTABS=$(curl -s "$url" | jq -r '.[1]|.|@tsv')
outLINE=$(curl -s "$url" | jq -r '.[1]|.[]|[.]|@tsv')

> echo "$outTABS"
val1    val2    valn

> echo "$outLINE"
val1
val2
valn
2 голосов
/ 30 апреля 2020

с массивом:

mapfile -t arr < <(curl -s "$url" | jq -r '.[1] | .[]')
declare -p arr
...