每当我尝试将带有换行符的输出插入变量时,例如:
Hello
World
一旦我对变量做了一个echo命令,我得到这个: " Hello World"
为什么会这样,我怎么样? 保持换行?
答案 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知道您尚未完成引用的材料,并打印辅助提示符(>
)并等待您完成命令。