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 <
emollier@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
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEj5GyJ8fW8rGUjII2eTz2fo8NEdoFAmW3+uQACgkQeTz2fo8N EdrAVxAAwABTt4eDj3xTH7ZRq1Uk0c0qLaoy8HCC4qXDVzXuqBO00jsXmBK1y2ht OaXUB1PUZz2fCztJBIwTNFphwcslDAQHDinZglcT79LGlhWPC4pE2ZIJhlGbivmv Gj0rh5vOIWK2kIp8h28Uw4fQ9k2HpZjlhaRiiJuJt28GoApoaNNZ9dZWHrjYc92D mhqyOZ0JYLlPEw+kT17kEv5bQIF3IWDe+u2XKL4It/FtUpIil5LlhSX5hsNLQ5lm JIH9/k7DANndpFaqD4vg0aysa3yvFbxPwDycmgrGRmKnKIdzLnSyDAMPEv5vvf/n nsHQ8KZdx5mC2RLC8v1HSy6bNRCkeC1AoaW6PqyjqgmkciUqnpsSkT/tTsNS0qkL Akn8vfvghWxo5mtPr5uZPEbPvFvMVsTkCUnOKVDk3XCxbPbHjYxpOiBCPumnpMX/ o4hgDlFNcfuBHzHK+5Sej+hQZqYFsGlVtcNZ/tbHYdkKA9IAa4xyvmGW8OzxwwQy NJrjr9QkSCHIE8idWwZdVbmtlRLFZg7bFs+iHIzbIM6/+d+LqQlftqjHIwQMi8iG J3mY7hBm7pdCR3OUvVFoUHBDLJuqbk84gp+4Y71S+kY4nTwN0OcqfqX90/tG9ZMT v3OMNu+q6Y6SXuda0juyIh8WGE4ep3/wBq4kmSIz