如何在Bash中保留引号内的换行符?

26 浏览
0 Comments

如何在Bash中保留引号内的换行符?

我正在创建一个脚本来自动化创建Apache虚拟主机。我的脚本的一部分如下所示:

MYSTRING="
ServerName $NEWVHOST
DocumentRoot /var/www/hosts/$NEWVHOST
...
"
echo $MYSTRING

然而,脚本中的换行符被忽略了。如果我echo这个字符串,它会一行一行地输出。

我该如何确保打印出换行符?

0
0 Comments

问题的原因是在Bash中,如果在变量中包含了换行符,当使用echo命令输出该变量时,换行符会被解释为命令的参数分隔符,而不是作为换行符输出。

解决方法是在输出变量时,给变量加上引号,这样换行符就不会被解释为参数分隔符了。

具体的解决方法如下所示:

echo "$MYSTRING"

通过给变量加上引号,输出命令将会是:

echo "line-1
line-2
line-3"

这样,echo命令将会以单个字符串参数的形式输出,其中包含了三行文本和两个换行符。

这个问题的解决方法让我明白了为什么echo命令会这样解释输入内容,因为它将输入内容解析为命令的参数!要是早点看到这样的解释就好了。

顺便提一下,还可以参考这个网址:stackoverflow.com/questions/10067266/…

0