From: Felix Fietkau Date: Sun, 16 Dec 2012 17:04:14 +0000 (+0100) Subject: jshn: fix some variable handling regressions X-Git-Url: http://git.archive.openwrt.org/?p=project%2Flibubox.git;a=commitdiff_plain;h=7bca5dd29dd39bf3a5ad3005dc408ac81bcb727b jshn: fix some variable handling regressions Signed-off-by: Felix Fietkau --- diff --git a/sh/jshn.sh b/sh/jshn.sh index 242e5a4..4600c52 100644 --- a/sh/jshn.sh +++ b/sh/jshn.sh @@ -113,7 +113,7 @@ _json_close_table() { local stack new_stack _json_get_var stack JSON_STACK - _json_set_var cur "${JSON_STACK##* }" + _json_set_var JSON_CUR "${stack##* }" new_stack="${stack% *}" [[ "$stack" == "$new_stack" ]] && new_stack= _json_set_var JSON_STACK "$new_stack" @@ -219,19 +219,23 @@ json_get_vars() { json_select() { local target="$1" local type + local cur [ -z "$1" ] && { _json_set_var JSON_CUR "JSON_VAR" return 0 } [[ "$1" == ".." ]] && { - eval "JSON_CUR=\"\${UP_$JSON_CUR}\"" + _json_get_var cur JSON_CUR + _json_get_var cur "UP_$cur" + _json_set_var JSON_CUR "$cur" return 0 } json_get_type type "$target" case "$type" in object|array) - _json_get_var JSON_CUR "$target" + json_get_var cur "$target" + _json_set_var JSON_CUR "$cur" ;; *) echo "WARNING: Variable '$target' does not exist or is not an array/object"