2010-03-10 3 views
59

Ich erstelle ein Skript, um die Erstellung von virtuellen Apache-Hosts zu automatisieren. Teil meines Skripts geht so:Wie behalte ich Zeilenumbrüche in einer Zeichenfolge in Anführungszeichen in Bash?

MYSTRING="<VirtualHost *:80> 

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

... 

" 
echo $MYSTRING 

Die Zeilenumbrüche im Skript werden jedoch ignoriert. Wenn ich die Saite stimme, wird sie als eine Zeile ausgespuckt.

Wie kann ich sicherstellen, dass die Zeilenumbrüche gedruckt werden?

Antwort

133

Anführungszeichen hinzufügen, damit es funktioniert: es auf diese Weise

echo "$MYSTRING" 

Look:

MYSTRING="line-1 
line-2 
line3" 

echo $MYSTRING 

wird dies als ausgeführt werden:

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

dh echo mit drei Parametern, Drucken jedes Parameters mit einem Leerzeichen dazwischen.

Wenn Sie Anführungszeichen um $MYSTRING hinzufügen, wird der resultierende Befehl sein:

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

heißt echo mit einem einzelnen String-Parameter, die drei Textzeilen und zwei Zeilenumbrüche hat.

+0

Danke :) Ich finde in Bash ziemlich verwirrend manchmal zu zitieren. Das hilft. –

+3

+1 - nette Erklärung –

+5

+1 - 14 Monate später, weil es nur der Google-Hit war, den ich brauchte. – eaj

Verwandte Themen