92 votes

Les tableaux dans le shell unix ?

Comment créer un tableau dans un script shell unix ?

98voto

Vincent Agami Points 91

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

62voto

ghostdog74 Points 86060

En bash, vous créez un tableau comme ceci

arr=(one two three)

pour appeler les éléments

$ echo "${arr[0]}"
one
$ echo "${arr[2]}"
three

pour demander l'entrée de l'utilisateur, vous pouvez utiliser read

read -p "Enter your choice: " choice

26voto

Mishka Points 71

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

13voto

Lai Jiangshan Points 777
#!/bin/bash

# define a array, space to separate every item
foo=(foo1 foo2)

# access
echo "${foo[1]}"

# add or changes
foo[0]=bar
foo[2]=cat
foo[1000]=also_OK

Vous pouvez lire l'ABS "Advanced Bash-Scripting Guide".

8voto

Dennis Williamson Points 105818

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"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X