======Bash : les tableaux======
* Objet : suite de la série de wiki visant à maîtriser bash via les différents caractère spéciaux.
* Niveau requis : {{tag>débutant avisé}}
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
* Suivi :
* Création par [[user>Hypathie]] le 08/04/2014
* Testé par [[user>Hypathie]] en Avril 2014
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=140886#p140886 | ici]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
* [[doc:programmation:shells:bash-les-differents-caracteres-speciaux|Vision d'ensemble]]
* [[doc:programmation:shells:la-page-man-bash-les-caracteres-speciaux|Détail et caractères]]
* [[doc:programmation:shells:la-page-man-bash-ii-les-operateurs-lexicographiques|Les opérateurs lexicographiques]]
* [[doc:programmation:shells:page-man-bash-iii-les-operateurs-de-comparaison-numerique|Les opérateurs de comparaison numérique]]
* [[doc:programmation:shells:page-man-bash-iv-symboles-dans-les-calculs-mathematiques|Les symboles dans les calculs]]
* ;-)
* [[doc:programmation:shells:man-bash-vi-les-caracteres-de-transformation-de-parametres|Les caractères de transformation de parametres]]
* [[doc:programmation:shells:bash-vii-globs-etendus-regex|Bash : Variables, globs étendus, ERb, ERe]]
===== Tableaux =====
Les tableaux ne respectent pas la norme POSIX : [[http://hyperpolyglot.org/shell]]
^ ^ ^
| tableau littéral | nums=(1 2 3 4) |
| taille du tableau | ${#nums[@]} |
| recherche | ${nums[0]} |
| modification de tableau | nums[1]=5 |
| tranche de tableau | ${nums[@]:1:2}
| concatenation | a=(1 2 3)\\ b=(4 5 6)\\ c=(${a[@]} ${b[@]}) |
| itération | for i in ${nums[@]}
do echo $i
done
|
Pour des explication et des exemples : [[doc:programmation:bash:script:tableaux|script_bash : les tableaux]] ;-)
===== Tableau et itération for =====
Pré-requis : [[doc:programmation:shell:avancee]]
#!/bin/bash
tableau=(un deux trois quatre)
for indice in "${!tableau[@]}";
do
echo ${tableau[$indice]};
done
un
deux
trois
quatre
===== Exemple : changer les noms de tous les fichiers d'un répertoire =====
* Soit le script "mon-script" :
#!/bin/bash
set +eu
cd /home/hypathie/DirTest/
fichiers=( $(ls) )
echo ${fichiers[@]}
# parcourir tous les paramètres du tableau avec une boucle
for i in "${fichiers[@]}"
do
echo "$i"
# changer les paramètres du tableau (=noms des fichiers)
mv "$i" "$i.txt"
echo "$i.txt"
done
* créer un dossier nommé par exemple "DirTest" contenant plusieurs fichiers :
mkdir ~/DirTest && cd ~/DirTest && touch Janvier Fevrier Mars Avril Mai Juin && cd ~
* Puis lancer "mon-script" :
./mon-script
Avril Fevrier Janvier Juin Mai Mars
Avril
Avril.txt
Fevrier
Fevrier.txt
Janvier
Janvier.txt
Juin
Juin.txt
Mai
Mai.txt
Mars
Mars.txt
===== Tuto précédent =====
[[doc:programmation:shells:page-man-bash-iv-symboles-dans-les-calculs-mathematiques|Bash : les symboles dans les calculs]]
===== La suite c'est là =====
[[doc:programmation:shells:man-bash-vi-les-caracteres-de-transformation-de-parametres|Bash : les caractères de transformation de parametres]]