In BASH gibt es keine mehrdimensionalen Arrays ...
... mag man kaum glauben, ist aber so. Doch es gibt einen Ausweg: man kann es über key/value-Hash-Arrays simulieren,
das ist aber aus verschiedenen Gründen unpraktisch (und deckt maximal zweidimensionale Arrays ab, auch wenn das meist reicht).
Eine zweite Methode ist die "Indirekte Referenz", dem “value of a value”, kurz gesagt $$var
, gut lesbar mittels ${!var}
.
Ein Beispiel:
#!/usr/bin/env bash
table_row_0=("Planet" "Size" "Distance")
table_row_1=("Mercury" 4879 "55")
table_row_2=("Venus" 12103 "108")
table_row_3=("Earth" 12735 "150")
table_row_4=("Mars" 6772 "228")
table_row_5=("Jupiter" 138346 "778")
table_row_6=("Saturn" 114632 "1433")
table_row_7=("Uranus" 50532 "2872")
table_row_8=("Neptune" 49105 "4495")
for (( num=0; num<9; num++ ))
do
planet_name="table_row_$num[0]"
planet_size="table_row_$num[1]"
planet_dist="table_row_$num[2]"
printf "%-20s | %6s km | %8s mio km\n" ${!planet_name} ${!planet_size} ${!planet_dist}
done
#bash