Как сохранить переводы строк в кавычках в 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 с одним строковым параметром, который имеет три строки текста и два разрыва строки.

Другие вопросы по тегам