LINUX.ORG.RU

История изменений

Исправление 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

попробуй.