GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So deklarieren Sie ein 2D-Array in Bash

Sie können sie zum Beispiel mit Hashes simulieren, müssen sich aber um die führenden Nullen und viele andere Dinge kümmern. Die nächste Demonstration funktioniert, aber sie ist weit von der optimalen Lösung entfernt.

#!/bin/bash
declare -A matrix
num_rows=4
num_columns=5

for ((i=1;i<=num_rows;i++)) do
    for ((j=1;j<=num_columns;j++)) do
        matrix[$i,$j]=$RANDOM
    done
done

f1="%$((${#num_rows}+1))s"
f2=" %9s"

printf "$f1" ''
for ((i=1;i<=num_rows;i++)) do
    printf "$f2" $i
done
echo

for ((j=1;j<=num_columns;j++)) do
    printf "$f1" $j
    for ((i=1;i<=num_rows;i++)) do
        printf "$f2" ${matrix[$i,$j]}
    done
    echo
done

Das obige Beispiel erstellt eine 4x5-Matrix mit Zufallszahlen und gibt sie transponiert aus, mit dem Beispielergebnis

           1         2         3         4
 1     18006     31193     16110     23297
 2     26229     19869      1140     19837
 3      8192      2181     25512      2318
 4      3269     25516     18701      7977
 5     31775     17358      4468     30345

Das Prinzip ist:Erstellen eines assoziativen Arrays, bei dem der Index ein String wie 3,4 ist . Die Vorteile:

  • kann für beliebig dimensionierte Arrays verwendet werden;) wie:30,40,2 für 3 dimensional.
  • Die Syntax ist ähnlich wie "C" wie Arrays ${matrix[2,3]}

Bash hat kein mehrdimensionales Array. Aber Sie können einen etwas ähnlichen Effekt mit assoziativen Arrays simulieren. Das Folgende ist ein Beispiel für ein assoziatives Array, das vorgibt, als mehrdimensionales Array verwendet zu werden:

declare -A arr
arr[0,0]=0
arr[0,1]=1
arr[1,0]=2
arr[1,1]=3
echo "${arr[0,0]} ${arr[0,1]}" # will print 0 1

Wenn Sie das Array nicht als assoziativ deklarieren (mit -A ), das oben wird nicht funktionieren. Zum Beispiel, wenn Sie declare -A arr weglassen Zeile, die echo druckt 2 3 statt 0 1 , weil 0,0 , 1,0 und wird als arithmetischer Ausdruck genommen und zu 0 ausgewertet (der Wert rechts vom Komma-Operator).


Linux
  1. So verwenden Sie Bash-Verlaufsbefehle

  2. Wie schreibe ich eine Schleife in Bash?

  3. Wie debuggt man ein Bash-Skript?

  4. Wie kann ich eindeutige Werte aus einem Array in Bash erhalten?

  5. So verschieben Sie den Array-Wert in der Bash

So vergleichen Sie Zeichenfolgen in Bash

Bash-Arrays

Assoziatives Array in Bash

Bash-Scripting:So lesen Sie Daten aus Textdateien

So verwenden Sie den Declare-Befehl in der Linux Bash Shell

So führen Sie ein Bash-Skript aus