Bash : comportement que je ne comprends pas

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. Contributeur
    hello
    pour afficher les lignes dans une variable, utiliser des "" :
    echo "$var"
    
    pour que ls affiche 1 fichier par ligne :
    ls -1
    1. 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
      1. Contributeur
        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