Как сохранить переводы строк в кавычках в Bash?
Я создаю скрипт для автоматизации создания виртуальных хостов apache. Часть моего сценария выглядит так:
MYSTRING="<VirtualHost *:80>
ServerName $NEWVHOST
DocumentRoot /var/www/hosts/$NEWVHOST
...
"
echo $MYSTRING
Однако разрывы строк в скрипте игнорируются. Если я повторяю строку, она выплевывается как одна строка.
Как я могу обеспечить печать разрывов строк?
1 ответ
Решение
Добавьте цитаты, чтобы все заработало:
echo "$MYSTRING"
Рассмотрим этот вариант:
MYSTRING="line-1
line-2
line3"
echo $MYSTRING
это будет выполнено как:
echo line-1 \
line-2 \
line-3
т.е. echo
с тремя параметрами, печатая каждый параметр с пробелом между ними.
Если вы добавите цитаты вокруг $MYSTRING
, результирующая команда будет:
echo "line-1
line-2
line-3"
т.е. echo
с одним строковым параметром, который имеет три строки текста и два разрыва строки.