2017-04-20 68 views
1

我想回應一些包含新行轉義序列的文件,但我希望它們保持轉義狀態。我正在尋找與this問題基本相反的問題。防止解釋反斜槓轉義的「回聲」

echo "part1\npart2" >> file 

我想是這樣的文件

$ cat file 
old 
part1\npart2 

中,但它看起來像

$ cat file 
old 
part1 
part2 
+1

這應該就像你發佈它一樣工作...不是嗎? –

+0

這應該是默認行爲https://unix.stackexchange.com/questions/219268/how-to-add-new-lines-when-using-echo - 什麼操作系統和什麼版本的'echo'你有? – chrki

+0

你試過'echo'嗎? – Igor

回答

3

這就是爲什麼POSIX建議使用的printf代替echo一個很好的例子(請參閱here,在「應用程序使用情況」下):您不知道您通過echo得到了什麼。

你可以得到:

  • 一個shell內建echo不解釋反斜槓默認
    • 例:猛砸內置echo有一個-e選項,啓用反斜槓轉義解釋和檢查xpg_echo外殼選項
  • A shell builtin echo解釋ba ckslash默認逃逸
    • 例子:zsh中,破折號
  • /bin/echo:可能取決於其中一個... GNU Coreutils的echo理解-e選項,如猛砸內置

的POSIX規格說這(重點礦):

string
要寫入標準輸出的字符串。如果第一個操作數是-n,或者任何操作數包含<backslash>字符,則結果是實現定義的

因此,對於便攜式解決方案,我們可以使用printf

printf '%s\n' 'part1\npart2' >> file 

凡在格式字符串中的\n總會解釋,並在參數中\n將永遠不會被解釋,導致

part1\npart2 

被附加到file