Bash : comportement que je ne comprends pas
gnugo
-
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
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
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
-
hello
pour afficher les lignes dans une variable, utiliser des "" :echo "$var"
pour que ls affiche 1 fichier par ligne :ls -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 -
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