Получить ключ и значение из строки json, ограниченной openwrt - PullRequest
0 голосов
/ 27 февраля 2020

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

Например {"address": "192.168.2.2", "user": "user1", "groups": "permissions"}

Я получаю от curl строку и мне нужно для разделения значений для передачи переменных другим командам.

Пока я проверяю некоторые примеры, но не работает

#!/bin/sh
. /usr/share/libubox/jshn.sh 
json_init
json_load '$(cat $STRING)'
json_get_keys keys
for k in $keys; do 
   json_get_var v "$k"
   echo "$k : $v"
done

Но выдает ошибку "Не удалось разобрать данные сообщения"

Моя проблема в том, что я не могу использовать jq или python для выбора данных, поэтому единственное решение - сначала отделить.

Предложения?

1 Ответ

1 голос
/ 28 февраля 2020

Я нашел другую форму более чистой, чтобы сделать то же самое

eval $(jsonfilter -s $STRING -e 'ADDRESS=@.address' -e 'USER=@.user')
echo "address=$ADDRESS user=$USER"

С помощью этой формы я могу фильтровать каждое значение как параметр, без функции jq или python.

...