Comment créer un tableau dans un script shell unix ?
Réponses
Trop de publicités?Le code suivant crée et imprime un tableau de chaînes de caractères en shell :
#!/bin/bash
array=("A" "B" "ElementC" "ElementE")
for element in "${array[@]}"
do
echo "$element"
done
echo
echo "Number of elements: ${#array[@]}"
echo
echo "${array[@]}"
Résultat :
A
B
ElementC
ElementE
Number of elements: 4
A B ElementC ElementE
Le shell Bourne ne supporte pas les tableaux. Cependant, il existe deux façons de gérer ce problème.
Utiliser les paramètres positionnels du shell $1, $2, etc :
$ set one two three
$ echo $*
one two three
$ echo $#
3
$ echo $2
two
Utilisez des évaluations variables :
$ n=1 ; eval a$n="one"
$ n=2 ; eval a$n="two"
$ n=3 ; eval a$n="three"
$ n=2
$ eval echo \$a$n
two
Le shell Bourne et le shell C n'ont pas de tableaux, IIRC.
En plus de ce que les autres ont dit, en Bash, vous pouvez obtenir le nombre d'éléments d'un tableau de la manière suivante :
elements=${#arrayname[@]}
et faire des opérations de type "slice" :
arrayname=(apple banana cherry)
echo ${arrayname[@]:1} # yields "banana cherry"
echo ${arrayname[@]: -1} # yields "cherry"
echo ${arrayname[${#arrayname[@]}-1]} # yields "cherry"
echo ${arrayname[@]:0:2} # yields "apple banana"
echo ${arrayname[@]:1:1} # yields "banana"