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