为什么 echo -e "\n" 给我两个空行而不是一个?

为什么 echo -e "\n" 给我两个空行而不是一个?

假设 file.txt 中有一行“aaaa”,我想在其后仅添加一个空行,然后在空行后添加一行文本。
我做了:
echo -e "\n" >> file.txt
echo "bbbb" >> file.txt
然后我在 aaaa 和 bbbb 之间看到了两个空行
当我只使用 echo "bbbb" >> file.txt 时,就有了两个文本行之间没有空行。
为什么会发生这种情况,我该如何摆脱它?

答案1

echo输出用作参数的字符串,然后在输出字符串的末尾添加换行符以终止该行。

echo "string"

你会得到string, 并在末尾换行。

因此,与

echo -e "\n"

您将得到换行符和末尾的换行符(即两个空行)。

如果您不需要额外的换行符(即输出未终止的行),请使用echo-n选项,或者在这种情况下您只想插入空行,只需使用echo ""echo不使用参数。

来自:help echobash

Options:
  -n        do not append a newline
  -e        enable interpretation of the following backslash escapes

如果您想要除 之外的可移植到其他 shell 的东西bash,请printf改用:

printf '\n' >>file.txt
printf 'bbbb\n' >>file.txt

或者,通过单个重定向执行这两个语句的另一种方法:

{
    printf '\n'
    printf 'bbbb\n'
} >>file.txt

或者简单地

printf '\nbbbb\n' >>file.txt

有关的:

相关内容