mercredi 7 mars 2007

Les tableaux


Les tableaux

Bash supporte les tableaux à une dimension. Aucune initialisation n'est nécessaire, mais si on tente d'afficher un tableau non initialisé, rien ne sera affiché. Le support des tableaux est un peu différent des autres langages de programmation. Il est possible directement d'assigner une valeur à un index particulier. Bash initialisera les autres index automatiquement.

Création

declare -a mon_tableau

Bash créera un tableau vide.
Il est possible de créer un tableau en lui attribuant des valeurs.

mon_tableau[2]='test'

Bash initilisera mon_tableau[0] et mon_tableau[1] à vide.

Opération

La commande ci-dessous affichera l'item à la position spécifié par l'index.
echo ${mon_tableau[index]}

La commande ci-dessous affichera tous les éléments du tableau
echo ${mon_tableau[*]}

La commande ci-dessous affichera le nombre d'élément du tableau
nbItem=${#mon_tableau[*]}
echo $nbItem

Voici un exemple qui énumère les notions apprisent jusqu'à maintenant
#!/bin/bash

#déclaration d'un tableau
declare -a mon_tableau

#initialisation du tableau
mon_tableau=( nuage soleil neige )

#affiche le deuxième éléments soit neige
echo ${mon_tableau[2]}

#affiche tous les éléments du tableau, soit nuage, soleil et neige
echo ${mon_tableau[*]}

#affiche le nombre d'élément
nbItem=${#mon_tableau[*]}
echo $nbItem

for ((i=0;i<$nbItem;i++)); do
  echo ${mon_tableau[${i}]}
done

Les tableaux en bash peuvent contenir différent type de donnée. Il est donc possible d'avoir des int, des chaînes de caractère dans le même tableau sans problème. Il suffira de faire attention si des opérations sont faites entre les éléments du tableau.

declare -a mon_tableau2

mon_tableau2=( 7 99 avion )

mon_tableau2[3]=`expr ${mon_tableau2[0]} + ${mon_tableau2[1]}`

#affichera 106
echo ${mon_tableau2[3]}

mon_tableau2[4]=`expr ${mon_tableau2[0]} + ${mon_tableau2[2]}`

#ceci générera une erreur car un int ne peut être ajouté à une string
echo ${mon_tableau2[4]}

Il faut donc faire très attention lorsque différents types de donnée sont employé au sein du même tableau.