Skip to content

Instantly share code, notes, and snippets.

@spacetrack
Last active August 26, 2023 03:52
Show Gist options
  • Save spacetrack/51145cf674d1d5fa36ce982dc3fdfd27 to your computer and use it in GitHub Desktop.
Save spacetrack/51145cf674d1d5fa36ce982dc3fdfd27 to your computer and use it in GitHub Desktop.
bash: mehrdimensionale Arrays

bash: mehrdimensionale Arrays

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

spacetrack.github.io

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment