Bash : comportement que je ne comprends pas

gnugo -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

j'ai un problème que je n'arrive pas à résoudre car je ne comprends pas ce qui se passe :

j'ai besoin d'avoir une liste de fichiers, chacun sur une ligne.

Quand je fais ls | cat , j'obtiens bien une liste avec un fichier par ligne
mais si je fais aa=$(ls | cat) puis echo $aa, toute la liste est sur une seule ligne... je ne comprends pas pourquoi...echo supprime les sauts de ligne ?
Même comportement avec un cat<<<$(ls) , je suis bloqué

Pouvez-vous m'expliquer ce qui se passe?
MERCI

3 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    pour afficher les lignes dans une variable, utiliser des "" :
    echo "$var"
    
    pour que ls affiche 1 fichier par ligne :
    ls -1
    0
  2. gnugo
     
    Effectivement, je viens tout juste de constater ça aussi.
    Donc la transformation se produit dès qu'on utilise une variable avec multiples lignes sans mettre de guillemets?
    Merci en tt cas
    0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    avec des "" la variable est affichée littéralement
    $ b="a          b"   
    $ echo $b   
    a b   
    $ echo "$b"   
    a          b      
    $ a="1  
    > 2"  
    $ echo $a  
    1 2  
    $ echo "$a"  
    1  
    2  
    
    0