J'essaie de stocker la liste des fichiers dans un tableau, puis de reboucler le tableau. Voici ce que j'obtiens lorsque j'exécute ls -ls
à partir de la console.
total 40
36 -rwxrwxr-x 1 amit amit 36720 2012-03-31 12:19 1.txt
4 -rwxrwxr-x 1 amit amit 1318 2012-03-31 14:49 2.txt
Le script bash suivant que j'ai écrit pour stocker les données ci-dessus dans un tableau bash.
i=0
ls -ls | while read line
do
array[ $i ]="$line"
(( i++ ))
done
Mais quand je echo $array
je n'obtiens rien !
Pour info, je lance le script de cette façon : ./bashscript.sh
0 votes
Bash exécute le pipeline dans un sous shell, donc votre affectation au tableau n'est disponible que dans do .. done.
0 votes
Je dirais que la question ici est vraiment "Comment itérer sur une liste de répertoires" ? Les tableaux ne sont PAS universellement supportés dans les scripts shell scripts. .
0 votes
Et même si vous avez un shell avec des tableaux, vous ne voulez pas ou n'avez pas besoin de garder les noms de fichiers en mémoire juste pour les parcourir en boucle un par un. Un tableau est utile si vous voulez comparer chaque fichier à tous les autres fichiers, par exemple, mais pour simplement parcourir les fichiers en boucle, utilisez une commande ordinaire
for file in *
ou autre, et ne gaspillez pas la mémoire en conservant une copie des informations que l'obus est parfaitement capable de produire à tout moment.