你能在变量中存储换行符吗?

时间:2014-12-17 23:52:16

标签: bash

每当我尝试将带有换行符的输出插入变量时,例如:

Hello
World

一旦我对变量做了一个echo命令,我得到这个: " Hello World"

为什么会这样,我怎么样? 保持换行?

2 个答案:

答案 0 :(得分:3)

在bash中,表达文字换行符的最简单方法是使用$''语法:

var=$'Hello\nWorld'
echo "$var"

请注意,如果您想要保留换行符或其他空格,那么在展开期间$var周围的引号为必需!如果你只运行

echo $var

...然后即使换行中存储了换行符,您也会看到

Hello World

在一行上,而不是

Hello
World

两行。


这是因为当您不使用引号时,shell会在空白处(包括换行符)拆分扩展的单词,并将该拆分创建的每个项目作为单独的参数传递。因此,

echo "$var"

将传递一个包含整个$var扩展名的字符串,而

echo $var

将运行相当于:

echo "Hello" "World"

...将文本中的每个单词作为单独的参数传递给echo(之后echo命令通过空格重新连接其参数,从而导致所描述的行为。)

答案 1 :(得分:0)

换行符可以嵌入到任何POSIX兼容shell中的字符串中:

$ str="Hello
> World"
$ echo "$str"
Hello
World

如果在关闭引号之前按Enter键,则shell知道您尚未完成引用的材料,并打印辅助提示符(>)并等待您完成命令。