Tworzę skrypt, który odczytuje zawartość pliku, manipuluje zawartością i dołącza do innego pliku (konkretnie pliku hostów wirtualnych). Formatowanie i białe znaki w pliku wyjściowym są ważne, ale kiedy piszę zawartość, białe znaki są usuwane.
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
Pierwsze echo wytwarza coś takiego
<VirtualHost *:80>
ServerAdmin webmaster@domain
DocumentRoot "root/web"
ServerName domain
ErrorLog "root/logs/error_log"
</VirtualHost>
ale ciąg znaków, który dostaje się do pliku, to
<VirtualHost *:80> ServerAdmin webmaster@domain DocumentRoot "root/web" ServerName domain ErrorLog "root/logs/error_log" </VirtualHost>
Jak zachować białe znaki podczas dołączania do pliku docelowego? Szukałem tego, ale wszystkie podobne pytania nie dotyczą mojego skryptu bez przepisywania go.
echo $TEMPLATE
to zadziała. Powinien także zwinąć wiele białych znaków.