2010-03-10 10 views
59

Estoy creando un script para automatizar la creación de hosts virtuales de apache. Parte de mi script es así:¿Cómo puedo preservar las nuevas líneas en una cadena entrecomillada en Bash?

MYSTRING="<VirtualHost *:80> 

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

... 

" 
echo $MYSTRING 

Sin embargo, se están ignorando los saltos de línea del guión. Si repito la cadena, se escupió como una línea.

¿Cómo puedo garantizar que se impriman los saltos de línea?

Respuesta

133

Añadir cotizaciones para hacer que funcione:

echo "$MYSTRING" 

lo veo de esta manera:

MYSTRING="line-1 
line-2 
line3" 

echo $MYSTRING 

esto va a ser ejecutado como:

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

es decir echo con tres parámetros, imprimiendo cada parámetro con un espacio entre ellos.

Si agrega comillas $MYSTRING, el comando resultante será:

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

decir echo con un único parámetro de cadena que tiene tres líneas de texto y dos saltos de línea.

+0

Gracias :) Encuentro citar en bash bastante confuso a veces. Esto ayuda. –

+3

+1 - buena explicación –

+5

+1 - 14 meses después, porque era solo el hit de google que necesitaba. – eaj

Cuestiones relacionadas