======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]]