2010-03-10 8 views
59

Tworzę skrypt do automatyzacji tworzenia wirtualnych hostów apache. Część mojego skryptu wygląda następująco:Jak zachować nowe linie w cudzysłowu w Bash?

MYSTRING="<VirtualHost *:80> 

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

... 

" 
echo $MYSTRING 

Jednak linie podziału w skrypcie są ignorowane. Jeśli echo ciąg, zostanie wyrzucony jako jedna linia.

Jak mogę zapewnić drukowanie linii podziału?

Odpowiedz

133

Dodaj cytaty, aby to działało:

echo "$MYSTRING" 

spojrzeć na to w ten sposób:

MYSTRING="line-1 
line-2 
line3" 

echo $MYSTRING 

zostanie to wykonane jako:

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

tj echo z trzech parametrów, drukowanie każdego parametru z odstępem między nimi.

Jeśli dodać cudzysłowy wokół $MYSTRING otrzymaną komenda będzie:

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

tj echo z pojedynczego parametru ciąg, który ma trzy wiersze tekstu i dwa podziały wiersza.

+0

Dzięki :) W cytacie basha często znajduję się zagmatwany. To pomaga. –

+3

+1 - miłe wyjaśnienie –

+5

+1 - 14 miesięcy później, ponieważ był to tylko hit, którego potrzebowałem. – eaj

Powiązane problemy