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