変数の新しい行

変数の新しい行

.shファイルを使用して構成ファイルを生成したいと思います。新しい行を挿入する方法がわかりません。

すでに持っているコード:

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

答え1

設定をファイルに書き込むだけで、次の内容が読みやすく、変数は必要ありません。

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

変数に必要なものがある場合:

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

echo "$conf" >/etc/apache2/sites-available/"$fulldomain".conf

答え2

別のオプションは、スクリプトにリテラル改行を含めることです。

% cat newl  
blah='x
y
z'

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

引用符に注意してください$blah

答え3

エコーするには、「-e」フラグを使用してください。

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

答え4

echo次に交換してみてください。printf

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

関連情報