我有以下 bash 字符串,我需要在“Hello”字符串之前添加换行符:
bash -c "echo 'Hello' > /location/file"
我已经尝试使用不同的语法变化来添加它\n
;在双引号之前,在双引号范围内,以及使用不同的转义变化。
如何在“Hello”字符串之前添加换行符,使其出现在第二行?
答案1
这里有(至少)三个选项。
- 使用文字换行符:
bash -c "echo '
Hello' > /location/file"
- 使用
printf
(或非标准echo -e
),它将反斜杠转义字符扩展为命令本身的一部分(两者都是 shell 内置命令):
bash -c "printf '\n%s\n' Hello > /location/file"
- 使用 bash 的非标准
$'
引用,它将反斜杠转义字符扩展为 shell 的一部分:
bash -c "echo $'\nHello' > /location/file
答案2
您可以使用$'\n'
:
$ bash -c "echo $'\nHello'" >somefile
Bash 手册提到了这一点:
该形式的单词
$'string'
经过特殊处理。该单词扩展为字符串,并按照 ANSI C 标准指定的方式替换反斜杠转义字符。反斜杠转义序列(如果存在)按如下方式解码:
(省略了标准转义序列表)
答案3
你可以这样做:
bash -c "echo $'\nHello'"