История изменений
Исправление Stanson, (текущая версия) :
Что-нибудь типа
#!/bin/bash
declare -A option
while IFS=$':' read v t ; do
v=$(echo $v)
t=$(echo $t)
if [ -n "$v" ] ; then
v="${v%\"}"
v="${v#\"}"
if [ -z "$t" ] ; then
s=$v
else
t="${t%\"}"
t="${t#\"}"
option["$s.$v"]="$t"
fi
fi
done < <( tr "{},\r\n" "\n" < config.json )
for k in ${!option[@]} ; do
echo "$k = ${option[$k]}"
done
попробуй.
Не очень красиво, но не сильно длиннее пистона, и парсит все данные конфига в hash array. Можно сделать чтобы несколько уровней вложенности понимал, но мне лень. :)
Исправление Stanson, :
Что-нибудь типа
#!/bin/bash
declare -A option
while IFS=$':' read v t ; do
v=$(echo $v)
t=$(echo $t)
if [ -n "$v" ] ; then
v="${v%\"}"
v="${v#\"}"
if [ -z "$t" ] ; then
s=$v
else
t="${t%\"}"
t="${t#\"}"
option["$s.$v"]="$t"
fi
fi
done < <( tr "{},\r\n" "\n" < config.json )
for k in ${!option[@]} ; do
echo "$k = ${option[$k]}"
done
попробуй.
Не очень красиво, но не сильно длиннее пистона, и парсит все переменные в hash array.
Исходная версия Stanson, :
Что-нибудь типа
#!/bin/bash
declare -A option
while IFS=$':' read v t ; do
v=$(echo $v)
t=$(echo $t)
if [ -n "$v" ] ; then
v="${v%\"}"
v="${v#\"}"
if [ -z "$t" ] ; then
s=$v
else
t="${t%\"}"
t="${t#\"}"
option["$s.$v"]="$t"
fi
fi
done < <( tr "{},\r\n" "\n" < config.json )
for k in ${!option[@]} ; do
echo "$k = ${option[$k]}"
done
попробуй.