Tableau en bash

Un court article sur l'utilisation des tableaux en bash.

Pas vraiment souvent utilisé en bash les tableaux sont un élément important des langages de programmation.

Voici un exemple :

#!/bin/bash

tab=()

valeur="JF"
valeur2="Digonnet"

tab+=($valeur)
tab+=($valeur2)

# Le premier élément de la liste
echo $tab

# Tout le tableau
echo ${tab[*]}

On déclare le tableau en utlisant des paranthèses.

On ajoute des élément via la syntaxe : "+=" suivi de parenthèses.

Un echo simple n'affiche que le premier élément du tableau.

Pour afficher tout le tableau il faut utliser les accolades.

Si vous générez votre tableau dans une fonction qui je le rapelle ne peut renvoyer qu'un code retour vous allez pouvoir le récupérer comme cela :

#!/bin/bash
ifs=$IFS
IFS=$'\n'

litMois()
{
while read m
do
  lesmois+="${m}|" 
done < mois.txt
echo $lesmois
return 0
}

liste=$(litMois)
IFS='|'
for (( i=0; i < ${#liste[*]}; i++ ))
do
  echo ${liste[i]}
done

avoec le fichier "mois.txt" contenant :

Janvier
Février
Mars
Avril
Mai
Juin
Juillet
Aout
Septembre
Octobre
Novembre
Decembre

C'est "bash" : on fait un écho dans une fonction pour récupérer un contenu dans une variable. On a changé le IFS parce que les données sont séparées par un "|" dans la fonction or par défaut ce serait le retour chariot qui serait utlisé.

Pour connaître la taille d'un tableau utlisez la syntaxe suivante :

echo ${#liste[*]}

où "liste[*]" désigne toute la liste et donc "#" la tailel de toute la liste.

Fait le 17/09/2018