jshn: add json_get_values (useful for arrays)

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
This commit is contained in:
Felix Fietkau 2013-10-29 14:59:47 +01:00
parent a2453456f2
commit b5aa522f5d

View file

@ -12,6 +12,15 @@ _json_set_var() {
eval "${JSON_PREFIX}$___var=\"\$___val\"" eval "${JSON_PREFIX}$___var=\"\$___val\""
} }
__jshn_raw_append() {
local var="$1"
local value="$2"
local sep="${3:- }"
eval "export -- \"$var=\${$var:+\${$var}\${value:+\$sep}}\$value\""
}
_jshn_append() { _jshn_append() {
local __var="$1" local __var="$1"
local __value="$2" local __value="$2"
@ -214,6 +223,22 @@ json_get_keys() {
eval "export -- \"$__dest=\${$__var}\"; [ -n \"\${$__var+x}\" ]" eval "export -- \"$__dest=\${$__var}\"; [ -n \"\${$__var+x}\" ]"
} }
json_get_values() {
local _v_dest="$1"
local _v_keys _v_val
unset "$_v_dest"
json_get_keys _v_keys "$2"
json_select "$2"
set -- $_v_keys
while [ "$#" -gt 0 ]; do
json_get_var _v_val "$1"
__jshn_raw_append "$_v_dest" "$_v_val"
shift
done
json_select ..
}
json_get_var() { json_get_var() {
local __dest="$1" local __dest="$1"
local __cur local __cur