Bash
如何在 bash 字元串中添加換行符?
我有以下 bash 字元串,我需要在“Hello”字元串之前添加一個換行符:
bash -c "echo 'Hello' > /location/file"
我已經嘗試使用不同的
\n
語法變體添加它;在雙引號之前,在雙引號範圍內,並且有不同的轉義變體。如何在“Hello”字元串之前添加換行符,使其出現在第二行?
這裡有(至少)三個選項。
- 使用文字換行符:
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
您可以使用
$'\n'
:$ bash -c "echo $'\nHello'" >somefile
Bash 手冊中提到了這一點:
形式的詞
$'string'
被特殊對待。該單詞擴展為字元串,並按照 ANSI C 標準的規定替換反斜杠轉義字元。反斜杠轉義序列(如果存在)按如下方式解碼:(省略了標準轉義序列表)