如何在Bash中用引号字符串保留换行符?

时间:2010-03-10 02:37:03

标签: bash

我正在创建一个脚本来自动创建apache虚拟主机。我的部分脚本是这样的:

MYSTRING="<VirtualHost *:80>

ServerName $NEWVHOST
DocumentRoot /var/www/hosts/$NEWVHOST

...

"
echo $MYSTRING

但是,脚本中的换行符被忽略。如果我回显字符串,就会把一个字符串吐出来。

如何确保打印换行符?

1 个答案:

答案 0 :(得分:158)

添加引号以使其有效:

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有一个字符串参数,有三行文字和两个换行符。