sh/jshn.sh: allow numbers in identifiers for json_get_var()
authorJo-Philipp Wich <jow@openwrt.org>
Tue, 15 May 2012 22:18:16 +0000 (00:18 +0200)
committerFelix Fietkau <nbd@openwrt.org>
Wed, 16 May 2012 08:42:37 +0000 (10:42 +0200)
When traversing arrays of tables or arrays of array it is required to
call json_select # where # is the index of the array item to select.

Internally json_select() calls json_get_var() to obtain the correct
prefix to populate $JSON_CUR with. However, the "tr" call in
json_get_var() incorrectly replaces all digits with underscores,
making any lookup for numeric array items fail.

The attached patch changes the "tr" expression to allow digits and
thus implements the expected behaviour for nested arrays.

sh/jshn.sh

index 117da67b8b2e6722143a7641df1d20b582226a9b..7228adf921276509b6da5675c0dc712217f4b98f 100644 (file)
@@ -100,7 +100,7 @@ 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}\""
 }