Bash : comportement que je ne comprends pas

Fermé
gnugo - 19 janv. 2012 à 12:32
dubcek Messages postés 18566 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 27 novembre 2022 - 19 janv. 2012 à 13:20
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

dubcek Messages postés 18566 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 27 novembre 2022 5 567
19 janv. 2012 à 12:45
hello
pour afficher les lignes dans une variable, utiliser des "" :
echo "$var"
pour que ls affiche 1 fichier par ligne :
ls -1
0
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 18566 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 27 novembre 2022 5 567
Modifié par dubcek le 19/01/2012 à 13:23
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