Bash, transformando uma lista de palavras em uma matriz

0

Desculpe se eu postei uma pergunta sobre um tópico discutido dezenas de vezes. Estou tentando trabalhar em um elemento de um array associativo e atribuí-lo a um array. Eu sei que em matrizes associativas bash são monodimendional, mas usando a expansão de seqüências de caracteres das cotações no bash eu iria atribuir uma matriz. No final, consegui fazer isso em duas etapas, mas não sei por que preciso dessa atribuição extra e se posso evitá-la.

Aqui está o script

FILE="/home/user/scripts/snapstbylist"

 declare -A stby
 while read line; do
    DS=${line%@*}
    SNAPSHOT=${line#*@}
    stby+=(["$DS"]=" $SNAPSHOT")
done < <(awk '/stby/{print $1}' $FILE)

for ds in "${!stby[@]}"; do
 #       echo ":-) $ds"
         DATASET2=( "${stby["$ds"]}" )

         DATASET=($DATASET2)

         LAST="${DATASET[-1]}"
         echo "The dataset list $ds contains ${#DATASET[@]} elements, i.e. ${DATASET[@]}"
done

DATASET2 é uma string com palavras, eventualmente DATASET é o array que eu quero. Existe uma maneira de evitar a atribuição DATASET = ($ DATASET2) e ter como DATASET2 a matriz que eu quero?

Extract of the file /home/user/scripts/snapstbylist

zserver02/home/GROUP/biastby@d20140123  227K    -       471M    -
zserver02/home/GROUP/biastby@d20140128  233K    -       471M    -
zserver02/home/GROUP/biastby@d20140129  206K    -       471M    -
zserver02/home/GROUP/biastby@d20140130  240K    -       471M    -
zserver02/home/GROUP/biastby@d20140131  438K    -       471M    -
zserver02/home/GROUP/biastby@d20140201  244K    -       471M    -
zserver02/home/GROUP/biastby@d20140202  220K    -       471M    -
zserver02/home/GROUP/biastby@d20140204  0       -       832M    -
zserver02/home/GROUP/bloombergstby@d20131119    0       -       148K    -
zserver02/home/GROUP/bloombergstby@initback02   0       -       148K    -
zserver02/home/GROUP/caestby@d20131228  0       -       626M    -
zserver02/home/GROUP/gtistby@d20140125  0       -       131K    -
zserver02/home/GROUP/juastby@d20140107  0       -       130K    -
zserver02/home/GROUP/kepstby@d20140118  0       -       138K    -
zserver02/home/GROUP/koastby@d20131227  93K     -       145K    -

Eu poderia somar desta maneira, porque

"$ {stby [" $ ds "]}"

em

DATASET2 = ("$ {stby [" $ ds "]}")

não está expandido?

Agradecemos antecipadamente

Alex

    
por user2984629 27.02.2014 / 13:21

0 respostas