如何在 Bash Shell 脚本中回显新行

echo 命令在末尾自动添加一个新行。 这很酷。

但是如果你只想显示一个空的新行怎么办? 或者,如果您想输出包含新行的内容?

好消息是,echo 可以让你使用换行符 n 如果您使用 -e 选项:

echo -e "NamenAddressnPhone Number"

如果你运行上面的命令,你会得到这个输出:

Name
Address
Phone Number

这很好,对吧? 让我们更详细地了解一下。

换行符是我们用来指定当前行已经结束并且文本将从当前行下面的行继续的术语。 在大多数类 UNIX 系统中, n 用于指定换行符。 它被称为换行符。

echo 命令,默认情况下, 禁用 反斜杠转义的解释。 因此,如果您尝试使用 ‘n’ 转义序列显示换行符,您会注意到一个问题。

$ echo Hellonworld
Hellonworld

$ echo 'Hellonworld'
Hellonworld

将单引号中的文本作为字符串文字也不起作用。

这不是预期的输出。 要实际打印换行符,您可以使用“-e”标志告诉 echo 命令您要启用反斜杠转义的解释。

$ echo -e 'Hellonworld'
Hello
world

很好,这就是你要找的。

让我用其他一些方法来显示换行符。

回显包含新行的变量

您可以将字符串存储在 bash 变量,然后使用“-e”标志回显它。

$ str="Hellonworld"

$ echo -e $str
Hello
world

使用 ‘$’ 字符而不是 -e 标志

美元符号“$”在中称为“扩展”字符 bash. 这是我之前使用的字符 example 在 shell 中引用变量的值。

如果您仔细查看下面的代码片段,您会发现在这种情况下,扩展字符的作用是保存一个临时值。

$ echo Hello$'n'world
Hello
world

或者,您可以将整个字符串用作“临时变量”:

$ echo $'Hellonworld'
Hello
world

我宁愿使用 -e 标志,虽然。

回显你的回声以用新行打印一些东西

当您回显一段文本时,回显命令会自动在文本末尾添加一个换行符(以及如何防止它)。

这意味着您可以将多个回显命令链接在一起以产生换行符。

$ echo Hello; echo world
Hello
world

使用 printf 在 Bash shell 中打印换行符

printf 是另一个命令行工具,它本质上将文本打印到终端,但它也允许您格式化文本。

用法非常简单,类似于 echo,但更可靠和一致。

$ printf 'Hellonworldn'
Hello
world

正如预期的那样,您有一个不使用任何标志的换行符。

结论

就个人而言,我更喜欢使用 -e 标志或使用 printf 命令在输出中显示新行。 我建议您也这样做,但请随意尝试。