如何在没有换行符的情况下使用 echo 命令

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 脚本。