ファイルの内容を読み取り、その内容を操作し、別のファイル(特に仮想ホストファイル)に追加するスクリプトを作成しています。出力ファイルのフォーマットと空白は重要ですが、内容を書き込むときに空白が取り除かれます。
VHOST_PATH="/etc/apache2/extra/httpd-vhosts.conf"
TEMPLATE_PATH="./template.conf"
TEMPLATE=$(<TEMPLATE_PATH)
# manipulating $TEMPLATE
echo $TEMPLATE #outputs correct whitespace
echo $TEMPLATE >> $VHOST_PATH #does not output correct whitespace
したがって、最初のエコーは次のようなものを生成します
<VirtualHost *:80>
ServerAdmin webmaster@domain
DocumentRoot "root/web"
ServerName domain
ErrorLog "root/logs/error_log"
</VirtualHost>
しかし、ファイルに入る文字列は
<VirtualHost *:80> ServerAdmin webmaster@domain DocumentRoot "root/web" ServerName domain ErrorLog "root/logs/error_log" </VirtualHost>
ターゲットファイルに追加するときに空白を保持するにはどうすればよいですか?私はこれを検索しましたが、同様の質問はすべて、書き直さないとスクリプトに当てはまりません。
echo $TEMPLATE
が、それがうまくいくのは驚くべきことです。複数の空白も折りたたむ必要があります。