Nova linha na variável

2

Eu quero criar um arquivo de configuração com um arquivo .sh. Eu não consigo descobrir como eu insiro novas linhas.

O código que eu já tenho:

domainconf='<VirtualHost *:80>\n ServerName '$fulldomain'\n DocumentRoot '$fullpath'\n </VirtualHost>'
echo $domainconf > /etc/apache2/sites-available/"$fulldomain".conf
    
por Patrick 05.07.2016 / 15:50

4 respostas

5

Se tudo o que você precisa fazer é gravar a configuração em um arquivo, o seguinte seria mais legível e eliminaria a necessidade de uma variável:

cat >/etc/apache2/sites-available/"$fulldomain".conf <<END_CONFIG
<VirtualHost *:80>
ServerName '$fulldomain'
DocumentRoot '$fullpath'
</VirtualHost>
END_CONFIG

Se você precisa absolutamente da coisa em uma variável:

conf=$(cat <<END_CONFIG
<VirtualHost *:80>
ServerName '$fulldomain'
DocumentRoot '$fullpath'
</VirtualHost>
END_CONFIG
)

echo "$conf" >/etc/apache2/sites-available/"$fulldomain".conf
    
por 05.07.2016 / 16:31
2

Outra opção é incorporar novas linhas literais no script:

% cat newl  
blah='x
y
z'

echo "$blah"
% sh newl 
x
y
z
% 

Observe as citações em $blah !

    
por 05.07.2016 / 16:31
2

Apenas faça eco com a sinalização '-e'

domainconf='<VirtualHost *:80>\n ServerName '$fulldomain'\n DocumentRoot '$fullpath'\n </VirtualHost>'
echo -e "$domainconf" > /etc/apache2/sites-available/"$fulldomain".conf
    
por 05.07.2016 / 16:10
1

Tente substituir echo por printf

domainconf='<VirtualHost *:80>\n ServerName '$fulldomain'\n DocumentRoot '$fullpath'\n </VirtualHost>'
printf "$domainconf" > /etc/apache2/sites-available/"$fulldomain".conf
    
por 05.07.2016 / 16:42