echo 命令是在 shell 脚本中打印任何内容的便捷方式。
默认情况下,它总是添加一个换行符。 因此,如果您运行多个 echo 命令,每个输出都会显示在新行上。
但这在您需要使用 echo 命令但没有换行符的情况下可能不方便。
想象一下自己试图打印斐波那契数列:1、1、2、3、5、8、13、21、34、55
您可以使用 -n
无需换行符即可打印的 echo 命令的标志:
echo -n "Hello World"
您会注意到提示立即显示在 Hello World 之后的同一行中。
让我们更深入地看看它。
打印没有换行的回显命令
让我们用一个简单的 for 循环来打印数组的内容 bash 脚本并检查它的输出。
$ bash_array=(1 2 3 4)
$ for i in ${bash_array[@]}; do
echo $i
done
1
2
3
4
如您所见,每次执行 echo 命令时,输出都会显示在换行符上。 有时这就是您想要的,有时您希望输出在同一行上继续,而不是从换行符开始。
满足“-n”标志
这 bash echo 命令的实现通常会在输出中附加一个“n”(表示换行符的转义字符)。 “-n”标志不会在输出中附加“n”。
$ bash_array=(1 2 3 4 5 6 7 8)
$ for i in ${bash_array[@]}; do
echo -n $i
done
12345678
如您所见,所有数字现在都显示在一行中。 这意味着每次运行 echo 命令时,它都不会输出到换行符。
echo -n 没有用。 怎么办?
在某些情况下,使用 echo -n
还打印 -n
字符而不是打印没有换行符的文本。
如果您使用的 shell 单独实现了 echo 命令,这是可能的。
使困惑? 一些发行版和 shell 可能有自己的一些内置 shell 命令的实现。 echo 就是这样一个命令。
以下是您可以尝试的几件事。
添加 shebang 字符,后跟 /bin/bash 确保您的 shell 脚本使用 bash 贝壳。
#!/bin/bash
如果这不起作用,您可以尝试使用 printf 命令而不是 echo。
默认情况下, printf 不添加换行符:
printf "Something without newline"
您必须明确提供换行符 n:
printf "Something with newlinen"
printf 命令的行为类似于 C 中的 printf 命令,您可以使用它来打印更复杂的格式化输出。
printf 命令的行为更加一致。 echo 适用于简单的事情,但我建议将 printf 用于更复杂的事情。
我希望这个简单的教程可以帮助你控制新行的行为 bash 脚本。