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