84 votes

comment préserver les nouvelles lignes dans une chaîne entre guillemets dans bash?

Je crée un script pour automatiser la création d'hôtes virtuels Apache. Une partie de mon script va comme ceci:

 MYSTRING="<VirtualHost *:80>

ServerName $NEWVHOST
DocumentRoot /var/www/hosts/$NEWVHOST

...

"
echo $MYSTRING
 

Toutefois, les sauts de ligne dans le script sont ignorés. Si je fais écho à la chaîne, il est recraché sous la forme d'une ligne.

Comment puis-je m'assurer que les sauts de ligne sont imprimés?

165voto

Martin Points 13951

Ajouter des guillemets pour le faire fonctionner:

echo "$MYSTRING"

Regardons cela de cette façon:

MYSTRING="line-1
line-2
line3"

echo $MYSTRING

ce sera exécutée comme:

echo line-1 \
line-2 \
line-3

c'est à dire echo avec trois paramètres, l'impression de chaque paramètre avec un espace entre eux.

Si vous ajoutez des guillemets autour de $MYSTRING, la commande sera:

echo "line-1
line-2
line-3"

c'est à dire echo avec un seul paramètre de chaîne qui dispose de trois lignes de texte et deux sauts de ligne.

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