Vecteurs/tableaux
http://www.ixany.org/docs/Shell_Les_tableaux_en_bash.html Les tableaux en bash peuvent être indicés ou associatifs. Pour l’instant je ne parle que des indicés.
Déclaration
Espaces indispensables près des parenthèses.
Déclaration implicite avec initialisation :
arraytest=( a b c )
Déclaration explicite :
declare -a tableau_indi
(ou pour un tableau associatif :)
declare -A tableau_asso
Remplacer “declare” par readonly
pour un tableau en lecture seule.
Usage
Accolades indispensables.
${arraytest} équivaut à ${arraytest[0]}
Obtenir la première valeur :
echo ${arraytest[0]}
la 2e :
echo ${arraytest[1]}
etc…
Obtenir la liste de toutes les valeurs :
echo ${arraytest[@]}
Obtenir le nombre de valeurs :
echo ${#arraytest[@]}
Ajouter une valeur :
arraytest+=( d )
read
Permet de lire un fichier ligne par ligne, et de récupérer chaque champ. IFS choisit le séparateur de champs (par défaut espace)
while IFS=\; read -r name domain port options; do
echo "nom : $name"
echo "port : $port"
echo "domain : $domain"
echo "options : $options "
done < "/my/data/file"
/my/data/file
contient :
# name;domain;port;options
imap;mail.example.com;993;;
smtp;mail.example.com;465;;
commentaires dans le fichier
Pour que read ignore les lignes avec les commentaires, on peut utiliser ça en ligne finale :
done <(sed -e 's/[[:space:]]*#.*// ; /^[[:space:]]*$/d' "/my/data/file")