Bash : comportement que je ne comprends pas

gnugo -  
dubcek Messages postés 18789 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
A voir également:

3 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
pour afficher les lignes dans une variable, utiliser des "" :
echo "$var"
pour que ls affiche 1 fichier par ligne :
ls -1
0
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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
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