如何在Linux Shell脚本输出中插入新行字符
Contents
1. 概述
在许多情况下,我们需要在句子中添加一个新行来格式化我们的输出。在本教程中,我们将探索一些用于在句子中打印换行符 ( \n ) 的 Linux 命令。
2. 使用echo
echo 命令是最常用的用于打印到标准输出的 Linux 命令之一:
$ echo "test statement \n to separate sentences"
test statement \n to separate sentences
默认情况下,echo将*\n视为输入字符串的常规部分。因此,要启用echo命令来解释换行符,我们应该使用-e*选项:
$ echo -e "test statement \n to separate sentences"
test statement
to separate sentences
注意无论我们是否使用*-e*, echo默认都会在每个句子的末尾添加*\n*。
** -e选项可能不适用于所有系统和版本。某些版本的echo甚至可以打印-e作为其输出的一部分。因此,**我们可以说echo*是不可移植的,除非我们省略标志和转义序列,这在这种情况下是没有用的*。因此,应用\n的更好方法是使用printf。
3. 使用printf
printf 命令也用于将我们的句子打印到标准输出:
$ printf "test statement \n to separate sentences"
test statement
to separate sentences $
与echo不同,** printf不需要**在我们的句子中启用解释\n的选项。因此,默认情况下,换行符将应用于句子。
请注意,与echo不同,** printf不会在每个句子的末尾自动添加*\n* 。结果末尾的$*就是因为这个。因此,我们需要在每一行的末尾手动添加\n :
$ printf "test statement \n to separate sentences \n"
test statement
to separate sentences
printf将适用于所有系统。请注意printf的一个缺点是它的性能。内置的 shell echo要快得多。因此,选择一个是便携性和性能之间的权衡。printf基本上可以做它 C 版本可以做的事情。因此,我们具有格式化输入字符串的优势。
4. 使用*$*
由于bash 2 ,形式为* $‘string’ 的单词被特殊处理。所有反斜杠转义的字符都将应用于句子。因此,我们可以将此格式与echo和printf* 一起使用:
$ echo $'test statement \n to separate sentences'
test statement
to separate sentences
我们使用echo因为printf默认解释为*\n*。请注意,我们应该使用单引号来覆盖输入字符串。双引号不起作用。