Bonsoir Basile, Basile Starynkevitch, on 2024-01-29: > J'essaie de collecter dans une variable tableau de bash files_to_remove les > fichiers temporaires (qu'il faudrait suprimer à la fin de cez script). > > Je n'arrive pas à comprendre la syntaxe des variables tableau en GNU bash.
Comme le veut l'adage, un exemple clair vaut mieux que des mégaoctets de documentation. Pour initialiser les entrées d'un tableau, on peut faire comme ceci : $ TAB[0]='zero' $ TAB[1]='un' $ TAB[2]='deux' Et pour accéder aux valeurs, il faut impérativement entourer la variable avec l'index d'accolades, comme suit : $ echo "${TAB[0]}" zero $ echo "${TAB[1]}" un $ echo "${TAB[2]}" deux Il y a deux méthodes bien distinctes pour accéder à tous les éléments d'un coup, via l'astérisque ou l'arobaze, illustrées par l'exemple ci-dessous : $ for elem in "${TAB[*]}"; do echo " * $elem"; done * zero un deux $ for elem in "${TAB[@]}"; do echo " * $elem"; done * zero * un * deux À noter que dans ce genre de situations, il devient essentiel d'être clair sur l'usage systématique des double quotes. Une construction courante pour accéder aux éléments à partir de l'index, comme celà arrive fréquemment en langages compilés impératifs, peut ressembler à ça : $ for i in $(seq 0 2) ; do echo " $i. ${TAB[$i]}"; done 0. zero 1. un 2. deux Il est aussi possible de construire et de concaténer des tableaux avec l'opérateur "parenthèse", par exemple : $ TAB=( "${TAB[@]}" "trois" "quatre" ) $ for elem in "${TAB[@]}"; do echo " * $elem"; done * zero * un * deux * trois * quatre Là encore, l'usage de l'arobase et des double quotes est essentiel pour que la concaténation se passe comme attendu : $ TAB_SUITE=( "le cinquieme" "le sixieme" ) $ TAB_INATTENDU=( "${TAB[*]}" ${TAB_SUITE[@]} ) $ for elem in "${TAB_INATTENDU[@]}" ; do echo " * $elem" ; done * zero un deux trois quatre * le * cinquieme * le * sixieme $ TAB_ATTENDU=( "${TAB[@]}" "${TAB_SUITE[@]}" ) $ for elem in "${TAB_ATTENDU[@]}" ; do echo " * $elem" ; done * zero * un * deux * trois * quatre * le cinquieme * le sixieme La documentation de référence sur les tableaux du bash se trouve dans le manuel de bash(1) au chapitre "Array", qui peut être retrouvé en effectuant une recherche de l'expression rationnelle "^ Arrays". Bonne soirée, :) -- .''`. Étienne Mollier <emoll...@debian.org> : :' : pgp: 8f91 b227 c7d6 f2b1 948c 8236 793c f67e 8f0d 11da `. `' sent from /dev/pts/5, please excuse my verbosity `- on air: Life Line Project - Unica
signature.asc
Description: PGP signature