Bash

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

  • July 18, 2021

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

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

我已經嘗試使用不同的\n語法變體添加它;在雙引號之前,在雙引號範圍內,並且有不同的轉義變體。

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

這裡有(至少)三個選項。

  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

您可以使用$'\n'

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

Bash 手冊中提到了這一點:

形式的詞$'string'被特殊對待。該單詞擴展為字元串,並按照 ANSI C 標準的規定替換反斜杠轉義字元。反斜杠轉義序列(如果存在)按如下方式解碼:

(省略了標準轉義序列表)

引用自:https://unix.stackexchange.com/questions/334240