X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;f=sh%2Fjshn.sh;h=7f922c4f41a3a62f0ebcef421b4bcf6e62a8c59c;hb=94ff2a0abb2938dc84cc46e513f0d039cacbe40a;hp=d3254606d3d766f14be34f6e8bfb2d7689d4f7fc;hpb=738884e7469969a0b30a077820f60ff0a1e37ac2;p=project%2Flibubox.git diff --git a/sh/jshn.sh b/sh/jshn.sh index d325460..7f922c4 100644 --- a/sh/jshn.sh +++ b/sh/jshn.sh @@ -24,7 +24,7 @@ json_add_generic() { var=$(( ${aseq:-0} + 1 )) export -- "SEQ_$cur=$var" else - local name="$(echo -n "$var" | tr -C '[a-zA-Z_]' _)" + local name="$(echo -n "$var" | tr -C '[a-zA-Z0-9_]' _)" [[ "$name" == "$var" ]] || export -- "NAME_${cur}_${name}=$var" var="$name" fi @@ -100,10 +100,17 @@ json_get_type() { json_get_var() { local dest="$1" - local var="$(echo -n "$2" | tr -C '[a-zA-Z_]' _)" + local var="$(echo -n "$2" | tr -C '[a-zA-Z0-9_]' _)" eval "export -- \"$dest=\${${JSON_CUR}_$var}\"" } +json_get_vars() { + while [ "$#" -gt 0 ]; do + local _var="$1"; shift + json_get_var "$_var" "$_var" + done +} + json_select() { local target="$1" local type