2012-05-26 20 views
6

Mam plik z zawartością:tablice asocjacyjne odczyt z pliku

([datname]=template1 [datctype]=cs_CZ.utf-8) 
([datname]=template0 [datctype]=cs_CZ.utf-8) 
([datname]=postgres [datctype]=cs_CZ.utf-8) 
([datname]=some\ stupid\ name [datctype]=cs_CZ.utf-8) 
([datname]=jqerqwer,\ werwer [datctype]=cs_CZ.utf-8) 

chciałbym czytać każdą linię i wcisnąć kontekst do zmiennej tablicy asocjacyjnej. Nie mam sukces z następującego kodu:

(cat <<EOF 
([datname]=template1 [datctype]=cs_CZ.utf-8) 
([datname]=template0 [datctype]=cs_CZ.utf-8) 
EOF      
) |      
while read r    
do      
    declare -A row=("$r") 
    echo ${row[datname]} 
done; 

mam błąd:

test3.sh: line 8: row: ([datname]=template1 [datctype]=cs_CZ.utf-8): must use subscript when assigning associative array 

jest możliwy odczyt tablicy z pliku?

Odpowiedz

6

Dodać dwie następujące zmiany: Usuń nawiasy w rachunku Deklarujemy i używać read z opcją -r (znaki wyłączyć escape):

while read -r line; do 
    declare -A row="$line" 
    ... 
done 
2

Usuń nawiasy z instrukcji declare, ponieważ są już w twoich danych.

declare -A row="$r" 
+0

tak, to działa, dziękuję bardzo –