如何在 bash shell 脚本中 echo 一个新行
echo 命令会在末尾自动添加新行,但是,如何只打印出一个空行呢?或者怎样在输出内容中包含一个新行呢?
可以在 echo 命令中使用 -e 选项,这样就可以使用换行符 \n 在同一输出行中打印新行了,如下例子:
echo -e "Name\nAddress\nPhone Number"
其输出如下:
Name Address Phone Number
下面我们来详细了解一下。
使用 echo 命令的 -e 选项打印新行
如果当前行的文本已结束,我们往往会新起一行,也就是换行。在大多数类 Unix 系统中,\n 用于新起一行,它被称为换行符。
默认情况下,echo 命令禁用反斜杠转义字符,因此,如果你尝试使用 \n 转义序列显示换行符,会发现这不起作用,将文本用单引号括起来作为字符串文本也不起作用。
$ echo Hello\nworld Hellonworld $ echo 'Hello\nworld' Hello\nworld
上面的例子可以看出,输出与我们期望的不一样。如果要让换行符起作用,这就需要用到 -e 选项了,该选项告诉 echo 命令我们希望启用反斜杠转义字符:
$ echo -e 'Hello\nworld' Hello world
这样,才是我们想要的。
下面我们介绍一些其他的方法来显示换行符。
echo 包含新行的变量
你可以将字符串存储在 bash 变量中,然后使用 -e 标志对其进行回显。看下面的例子:
$ str="Hello\nworld" $ echo -e $str Hello world
使用美元符号 $
在 bash 中,美元符号 $ 被称为扩展字符,它可以在 shell 中引用变量的值。
看下面这段代码,扩展字符的作用相当于保存一个临时的值:
$ echo Hello$'\n'world Hello world
或者,也可以将整个字符串用作“临时变量”:
$ echo $'Hello\nworld' Hello world
不过,我更喜欢使用 -e 标志。
使用 echo 打印包含新行的内容
当你使用 echo 命令打印一段文本的时候,echo 命令会在文本的末尾自动添加一个换行符。
这意味着您可以将多个echo命令链接在一起以生成换行。看下面的例子:
$ echo Hello; echo world Hello world
使用 printf 在 bash shell 中打印换行符
printf 是一个命令行工具,它可以将文本打印在终端上,也允许用户格式化文本。
其用法也很简单,类似于 echo,但是更加方便。看下面的例子:
$ printf 'Hello\nworld\n' Hello world
正如我们设想的那样,printf 没有使用任何选项,不过连带换行符也会一起输出在终端上。
就我个人而言,我更喜欢使用 echo 命令的 -e 选项,或者使用 printf 命令来显示输出中的新行。我建议你也这么做,但你可以自由尝试。
原文地址:https://mp.weixin.qq.com/s/_Fjb2kxCjTh1PeFW91U3rg
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。