Ein Array deklarieren, aber nicht definieren?

8

Es gibt viele Anleitungen aus dort , die zeigen, wie man ein Array deklariert und definiert

foo[0]=abc 
foo[1]=def

Was ich versuche zu erreichen, besteht darin, ein Array zu deklarieren, aber nicht zu definieren, weil es nicht sofort definiert werden muss. In den meisten Programmiersprachen sieht es ungefähr so ​​aus

int bar[100];

Ist das in der Shell-Skriptsprache möglich?

    
Computernerd 09.01.2014, 05:32

3 Antworten

14

Sie können angeben, dass eine Variable ein Array ist, indem Sie ein leeres Array erstellen:

var_name=()

var_name ist dann ein Array wie von

gemeldet
$ declare -p var_name
declare -a var_name='()'

Beispiel:

var_name=()
for i in {1..10}; do
    var_name[$i]="Field $i of the list"
done
declare -p var_name
echo "Field 5 is: ${var_name[5]}"

was so etwas ausgibt:

declare -a var_name='([1]="Field 1 of the list" [2]="Field 2 of the list" [3]="Field 3 of the list" [4]="Field 4 of the list" [5]="Field 5 of the list" [6]="Field 6 of the list" [7]="Field 7 of the list" [8]="Field 8 of the list" [9]="Field 9 of the list" [10]="Field 10 of the list")'
Field 5 is: Field 5 of the list
    
kiri 09.01.2014, 05:36
4

Zusätzlich zu dem obigen Weg können wir auch ein Array durch declare-Anweisung erstellen.

Die declare-Anweisung mit der Option -a kann verwendet werden, um eine Variable als Array zu deklarieren, aber das ist nicht notwendig. Alle Variablen können als Arrays ohne explizite Definition verwendet werden. In der Tat scheint es so zu sein, dass alle Variablen Arrays sind und dass die Zuweisung ohne einen Index dasselbe ist wie die Zuweisung an "[0]". Die explizite Deklaration eines Arrays erfolgt mithilfe der eingebauten Deklaration:

declare -a ARRAYNAME

Assoziative Arrays werden mit

erstellt
declare -A name.

Attribute können für eine Array-Variable mit den declare- und readonly-Builtins angegeben werden. Jedes Attribut gilt für alle Mitglieder eines Arrays.

Nachdem Sie eine Array-Variable festgelegt haben, greifen Sie folgendermaßen zu:

${array_name[index]}
    
a.m. 09.01.2014 07:13
0

Das ist eigentlich dasselbe wie C. In C können wir das Array wie gewünscht verwenden. Hier können wir ein leeres Array nehmen und dann irgendwelche Werte setzen.

bar=()

Simple For-Schleife, um Wert in diesem Array zu nehmen und folgendes zu drucken:

bar=()
for ((i=0;i<10;i++));
do
    read bar[$i]  #Take Value in bar array
    echo bar[$i]
done

Hoffe, es hilft.

    
Maniruzzaman Akash 23.10.2017 07:34

Tags und Links