Ls dans un shel script

Résolu
Utilisateur anonyme -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
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
Configuration: Windows XP
Firefox 3.0.5

3 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Essaie comme ça :
    TRUC=$(ls -1)
    echo "$TRUC"
    C'est un UN et pas un "ELLE" minuscule !

    ;-))
    0
  2. Utilisateur anonyme
     
    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 !!!

    @+!
    0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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é ;-\
    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$
    ;-))
    0