>Так не работает printf!
>Больше двух символов "\" он игнорирует. Да ничего он не игнорирует... Просто в приведённом в самом начале примере кода используются двойные кавычки и шелл обрабатывает бэкслэши внутри них. Надо писать либо
printf ' <VirtualHost \\\n' >> $file
printf ' 69.159.46.73:80 \\\n' >> $file
либо
printf " <VirtualHost \\\\\\n" >> $file
printf " 69.159.46.73:80 \\\\\\n" >> $file
Первый вариант понятнее, второй нужен, если внутри вывода есть переменные, которые нужно разыменовать.
А вообще, вопрос сформулирован как-то... долго не мог понять, в чём собственно проблема.