.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