Этот вопрос уже имеет ответ здесь:
Я создаю сценарий для автоматизации создания апачских виртуальных хостов. Часть моего сценария идет как это:
MYSTRING="
ServerName $NEWVHOST
DocumentRoot /var/www/hosts/$NEWVHOST
...
"
echo $MYSTRING
Однако разрывы строки в сценарии игнорируются. Если я повторяю строку, выводит размолвку как одну строку.
Как я могу удостовериться, что разрывы строки печатаются?
Добавьте кавычки, чтобы он работал:
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
с одним строковым параметром, который имеет три строки текста и два разрыва строки.