Mat*_*ngh 3 macos terminal newline zsh echo
我想向包含新的换行序列的文件回显某些内容,但是我希望它们保持转义状态。我正在寻找与这个问题相反的东西。
echo "part1\npart2" >> file
Run Code Online (Sandbox Code Playgroud)
我想在文件中看起来像这样
$ cat file
old
part1\npart2
Run Code Online (Sandbox Code Playgroud)
但看起来像
$ cat file
old
part1
part2
Run Code Online (Sandbox Code Playgroud)
这是一个很好的示例,说明了POSIX为什么建议使用printf而不是的方式echo(请参见此处,“应用程序使用情况”下的内容):您不知道从中得到什么echo。
您可以获得:
echo默认情况下,不解释反斜杠转义的
内置shellecho具有-e启用反斜杠转义解释并检查xpg_echoshell选项的选项echo默认情况下解释反斜杠转义的
内置shell/bin/echo:可能取决于哪个文件– GNU Coreutils可以echo理解该-e选项,例如内置的Bash。POSIX规范说明了这一点(重点是我):
应支持以下操作数: 要写入标准输出的字符串。如果第一个操作数是,或者任何一个操作数包含一个字符,则结果是实现定义的。
string-n<backslash>
因此,对于便携式解决方案,我们可以使用printf:
printf '%s\n' 'part1\npart2' >> file
Run Code Online (Sandbox Code Playgroud)
其中\n格式字符串中的in将始终被解释,而\nin参数中的in将永远不会被解释,从而导致
part1\npart2
Run Code Online (Sandbox Code Playgroud)
被附加到file。
| 归档时间: |
|
| 查看次数: |
1298 次 |
| 最近记录: |