Bash, dizideki kelimelerin dizilim listesini çeviriyor


0

Üzgünüm onlarca kez tartışılan bir konu hakkında bir soru yayınlarsam. Bir ilişkisel dizinin bir öğesi üzerinde çalışmaya ve onu bir diziye atamaya çalışıyorum. Bash ilişkisel dizilerinin tek boyutlu olduğunu biliyorum, ancak bash içindeki tırnakların string genişlemesini kullanarak bir dizi atayacağım. Sonunda iki adımda yapmayı başardım ama neden bu fazladan ödeve ihtiyacım olduğunu ve bundan kaçınabiliyorsam bilmiyorum.

İşte senaryo

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 içinde kelimeler bulunan bir dizedir, sonunda DATASET istediğim dizidir. DATASET = ($ DATASET2) atamasını engellemenin ve DATASET2 olarak istediğim diziye sahip olmanın bir yolu var mı?

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    -

Bu şekilde toplayabilirim, neden

"$ {STBY [" $ ds "]}"

içinde

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

genişletilmedi?

Şimdiden teşekkürler,

Alex


1
imho, bash dizilerle ilgili çok kısıtlayıcı ve sınırlı özelliklere sahiptir. neden python / perl gibi biraz daha eksiksiz bir dil kullanmıyorsunuz?
mveroone,

@ Kwaio, bu projeyi tamamladıktan sonra yapacağım, diğer senaryolar için, aynı projenin bir kısmı bash içinde ve bu yüzden buna bağlı kalmalıyım :)
user2984629
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.