如何在 bash 字符串中添加换行符?

如何在 bash 字符串中添加换行符?

我有以下 bash 字符串,我需要在“Hello”字符串之前添加换行符:

bash -c "echo 'Hello' > /location/file"

我已经尝试使用不同的语法变化来添加它\n;在双引号之前,在双引号范围内,以及使用不同的转义变化。

如何在“Hello”字符串之前添加换行符,使其出现在第二行?

答案1

这里有(至少)三个选项。

  1. 使用文字换行符:
bash -c "echo '
Hello' > /location/file"
  1. 使用printf(或非标准echo -e),它将反斜杠转义字符扩展为命令本身的一部分(两者都是 shell 内置命令):
bash -c "printf '\n%s\n' Hello > /location/file"
  1. 使用 bash 的非标准$'引用,它将反斜杠转义字符扩展为 shell 的一部分:
bash -c "echo $'\nHello' > /location/file

答案2

您可以使用$'\n'

$ bash -c "echo $'\nHello'" >somefile

Bash 手册提到了这一点:

该形式的单词$'string'经过特殊处理。该单词扩展为字符串,并按照 ANSI C 标准指定的方式替换反斜杠转义字符。反斜杠转义序列(如果存在)按如下方式解码:

(省略了标准转义序列表)

答案3

你可以这样做:

bash -c "echo $'\nHello'"

相关内容