Assoc Array Wert via Index Nummer ausgeben


strukturart

Erfahrenes Mitglied
Hallo,

ich habe angefangen ein script zu schreiben das eine .csv ausliest und den Inhalt in ein Array speichert.
Wie kann man einen Wert anhand der Index Nummer aufrufen wenn es ein Assoc Array ist ?

Code:
echo ${data_arr[$number]}



Code:
#!/bin/bash
#store data in 2d arry
declare -A data_arr
IFS=","
i=0
while read f1 f2
do
    count=`expr $count + 1`
    #echo $count')' $f1 $f2
    data_arr[$f1]=$f2
done < adressbook.csv


#list adressbook
count_index=0

for key in "${!data_arr[@]}"
do
    count_index=`expr $count_index + 1
     echo "$count_index) ${key} ${data_arr[$key]}"


done

read -e -p "select if you want to writer: " number

echo ${data_arr[$number]}
 

strukturart

Erfahrenes Mitglied
Habe es jetzt mit einem 2. Array gelöst

Code:
#!/bin/bash
#store data in 2d arry
declare -A data_arr
declare -a data_arr_index

IFS=","
i=0
while read -r f1 f2
do
    count=`expr $count + 1`
    #echo $count')' $f1 $f2
    data_arr[$f1]=$f2
    data_arr_index+=($f1)
done < adressbook.csv



#list adressbook
count_index=0

for key in "${!data_arr[@]}"
do
    count_index=`expr $count_index + 1`

   
     echo "$count_index) ${key} ${data_arr[$key]}"


done

read -e -p "select if you want to writer: " number
index_number=${data_arr_index[$number-1]}
echo ${data_arr[$index_number]}

aber bei der Ausgabe kommt umgekehrt raus
im file: a b c d e in der ausgabe e d c b a

wieso ist das so ?
 
Zuletzt bearbeitet:

Neue Beiträge