Déclarer un tableau sans le définir?

14

Il y a beaucoup de guides là - bas qui montrent comment déclarer et définir un tableau

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

Ce que j'essaie d'atteindre, c'est de déclarer un tableau mais pas de le définir car il n'a pas besoin d'être défini immédiatement, dans la plupart des langages de programmation, il ressemblera à ceci

int bar[100];

Est-ce possible dans le langage de script shell?

Ballot d'ordinateur
la source

Réponses:

23

Vous pouvez spécifier qu'une variable est un tableau en créant un tableau vide, comme ceci:

var_name=()

var_name sera alors un tableau tel que rapporté par

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

Exemple:

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]}"

qui génère quelque chose comme ceci:

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
la source
minerz029, @am: ..et comment définir les éléments? J'ai essayé mais je ne pouvais définir / accéder qu'à une seule chaîne .. un petit exemple pour définir et accéder aux valeurs de la variable de tableau serait génial ...
précis
bien compris cela .. je manquais les accolades ..
précis
4

En plus de la méthode ci-dessus, nous pouvons également créer un tableau par déclaration.

L'instruction declare avec l'option -a peut être utilisée pour déclarer une variable sous forme de tableau, mais ce n'est pas nécessaire. Toutes les variables peuvent être utilisées comme des tableaux sans définition explicite. En fait, il apparaît que dans un sens, toutes les variables sont des tableaux, et que l'affectation sans indice est identique à l'affectation à "[0]". La déclaration explicite d'un tableau se fait à l'aide de la déclaration intégrée:

declare -a ARRAYNAME

Les tableaux associatifs sont créés à l'aide de

declare -A name.

Les attributs peuvent être spécifiés pour une variable de tableau à l'aide des commandes internes declare et readonly. Chaque attribut s'applique à tous les membres d'un tableau.

Après avoir défini une variable de tableau, vous y accédez comme suit:

${array_name[index]}
un m
la source
1

C'est en fait le même que C. En C, nous pouvons prendre le tableau comme vous le souhaitez. Ici, nous pouvons prendre un tableau vide et ensuite mettre toutes les valeurs.

bar=()

Simple For Loop pour prendre de la valeur dans ce tableau et imprimer ce qui suit:

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

J'espère que cela aide.

Maniruzzaman Akash
la source
Quel est le problème dans la réponse? Pourquoi voter contre?
Maniruzzaman Akash