1
我想回應一些包含新行轉義序列的文件,但我希望它們保持轉義狀態。我正在尋找與this問題基本相反的問題。防止解釋反斜槓轉義的「回聲」
echo "part1\npart2" >> file
我想是這樣的文件
$ cat file
old
part1\npart2
中,但它看起來像
$ cat file
old
part1
part2
我想回應一些包含新行轉義序列的文件,但我希望它們保持轉義狀態。我正在尋找與this問題基本相反的問題。防止解釋反斜槓轉義的「回聲」
echo "part1\npart2" >> file
我想是這樣的文件
$ cat file
old
part1\npart2
中,但它看起來像
$ cat file
old
part1
part2
這就是爲什麼POSIX建議使用的printf
代替echo
一個很好的例子(請參閱here,在「應用程序使用情況」下):您不知道您通過echo
得到了什麼。
你可以得到:
echo
不解釋反斜槓默認
echo
有一個-e
選項,啓用反斜槓轉義解釋和檢查xpg_echo
外殼選項echo
解釋ba ckslash默認逃逸
/bin/echo
:可能取決於其中一個... GNU Coreutils的echo
理解-e
選項,如猛砸內置的POSIX規格說這(重點礦):
string
要寫入標準輸出的字符串。如果第一個操作數是-n
,或者任何操作數包含<backslash>
字符,則結果是實現定義的。
因此,對於便攜式解決方案,我們可以使用printf
:
printf '%s\n' 'part1\npart2' >> file
凡在格式字符串中的\n
總會解釋,並在參數中\n
將永遠不會被解釋,導致
part1\npart2
被附加到file
。
這應該就像你發佈它一樣工作...不是嗎? –
這應該是默認行爲https://unix.stackexchange.com/questions/219268/how-to-add-new-lines-when-using-echo - 什麼操作系統和什麼版本的'echo'你有? – chrki
你試過'echo'嗎? – Igor