121 votes

Essayer d'intégrer une nouvelle ligne dans une variable dans bash

j'ai

 var="a b c"
for i in $var
do
   p=`echo -e $p'\n'$i`
done
echo $p

Je veux que le dernier écho s'imprime

 a
b
c

Notez que je veux que la variable p contienne des sauts de ligne. Comment je fais ça?

14voto

Dolda2000 Points 7523

Essayez echo $'a\nb' .

Si vous souhaitez le stocker dans une variable puis l'utiliser avec les nouvelles lignes intactes, vous devrez citer correctement votre utilisation :

 var=$'a\nb\nc'
echo "$var"

Ou, pour corriger littéralement votre exemple de programme :

 var="a b c"
for i in $var; do
    p="`echo -e "$p\\n$i"`"
done
echo "$p"

5voto

yoshi kakbudto Points 99

il n'est pas nécessaire d'utiliser pour le cycle

vous pouvez bénéficier des fonctions d'extension des paramètres bash :

 var="a b c"; 
var=${var// /\\n}; 
echo -e $var
a
b
c

ou utilisez simplement tr :

 var="a b c"
echo $var | tr " " "\n"
a
b
c

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X