Ls dans un shel script
Résolu
Utilisateur anonyme
-
jipicy Messages postés 41342 Statut Modérateur -
jipicy Messages postés 41342 Statut Modérateur -
Bonjour,
Je fait un shellscript, où j'aimerai faire entrer dans une variable la liste du nom des fichier d'un dossier, un par ligne
sur le shell , je rentre " ls --format=single-column ", ça me sort la liste ligne par ligne, no problem
par contre , dans mon shellscript, si je fait
TRUC=`ls --format=single-column`
echo $TRUC
ou
echo $(`ls --format=single-column`)
ça me ressort la liste des fichiers a la suite, sur la meme ligne
donc sur ce coup la, je peux pas m'en servir pour faire une boucle for les boules
mais pouquoi don boudiou ??
j'ai essayer sur sh et bash
Je fait un shellscript, où j'aimerai faire entrer dans une variable la liste du nom des fichier d'un dossier, un par ligne
sur le shell , je rentre " ls --format=single-column ", ça me sort la liste ligne par ligne, no problem
par contre , dans mon shellscript, si je fait
TRUC=`ls --format=single-column`
echo $TRUC
ou
echo $(`ls --format=single-column`)
ça me ressort la liste des fichiers a la suite, sur la meme ligne
donc sur ce coup la, je peux pas m'en servir pour faire une boucle for les boules
mais pouquoi don boudiou ??
j'ai essayer sur sh et bash
A voir également:
- Script ls
- Script vidéo youtube - Guide
- Ghost script - Télécharger - Polices de caractères
- Mas script - Accueil - Windows
- Script cmd - Guide
- 'Ls' n’est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes. - Forum Windows
3 réponses
Merci pour ta réponse, jipicy
Oui c'est vraiment etrange comme comportement :
rentré directement sur le shell debian, ls renvoi une ligne, tandis que un script avec :
echo "$(ls /)" (meme sans le -1 !!) me renvois bien mon tableau
en fait j'ai l'impression que mon soucis ne venais pas de ls proprement dis, mais de la sortie standard qui modifie les retour à la ligne sur certaine version de linux (par ex sur rhel5 no problem).
pour resoudre ça, soit se passer de la sortie standard pour remplir la variable ( comme plus haut), ou soit forcer un retour à la ligne du genre
echo -e $LIST '\n'
dans ma boucle for list in ...
bien sur, c'est BEAUCOUP plus propre et moins onéreux en ressource de se passer de la sortie standard
ouf !!!
@+!
Oui c'est vraiment etrange comme comportement :
rentré directement sur le shell debian, ls renvoi une ligne, tandis que un script avec :
echo "$(ls /)" (meme sans le -1 !!) me renvois bien mon tableau
en fait j'ai l'impression que mon soucis ne venais pas de ls proprement dis, mais de la sortie standard qui modifie les retour à la ligne sur certaine version de linux (par ex sur rhel5 no problem).
pour resoudre ça, soit se passer de la sortie standard pour remplir la variable ( comme plus haut), ou soit forcer un retour à la ligne du genre
echo -e $LIST '\n'
dans ma boucle for list in ...
bien sur, c'est BEAUCOUP plus propre et moins onéreux en ressource de se passer de la sortie standard
ouf !!!
@+!
en fait j'ai l'impression que mon soucis ne venais pas de ls proprement dis, mais de la sortie standard qui modifie les retour à la ligne sur certaine version de linux (par ex sur rhel5 no problem).
En fait c'est au niveau des quotes (doubles) aurour de la variable que ça importe et apparemment du shell utilisé ;-\
En fait c'est au niveau des quotes (doubles) aurour de la variable que ça importe et apparemment du shell utilisé ;-\
jp@MDK:~/tmpfs ssh$ ls a b c d e f jp@MDK:~/tmpfs ssh$ ls -1 a b c d e f jp@MDK:~/tmpfs ssh$ A=$(ls -1) jp@MDK:~/tmpfs ssh$ echo $A a b c d e f jp@MDK:~/tmpfs ssh$ echo "$A" a b c d e f jp@MDK:~/tmpfs ssh$;-))