macos - echo 程序打印换行符而不是 '\n'
问题描述
在 bash 中,单引号之间的任何内容都将保持其字面意义,但是当我在终端中键入 "echo '\n'" 时。我得到的输出是换行符,而不是预期的 '\n' 字符。
解决方案
根据 POSIX 规范echo
:
如果第一个操作数是 -n,或者任何操作数包含
<backslash>
字符,则结果是实现定义的。
echo
通常是内置的 shell,zsh
默认情况下会解释反冲转义。您可以使用echo -E
,它告诉zsh
和bash
版本echo
禁用特殊处理。zsh
还使用BSD_ECHO
shell 选项来控制这种行为:
$ echo "\n"
$ echo -E "\n"
\n
$ setopt BSD_ECHO
$ echo "\n"
\n
不过,最便携的替代方法是使用printf
instead of echo
,因为它不依赖于任何特定于 shell 的行为:
$ printf '\\n\n'
\n
推荐阅读
- laravel - Laravel,如何在控制器中使用 foreach 在数据库中插入多行?
- java - 房间 DAO 返回的对象上的空对象引用
- sql - 如何以递减顺序对列进行排序,如果我们找到一个并列的记录,我们将根据 SQL 中的另一列对它们进行排序?
- firebase - Flutter,更新firebase数据时setstate不起作用
- node.js - 设置数据库数据后在nodejs中加载模块
- node.js - 如何在每次构建之前运行测试套件?
- c# -
- reactjs - React CASL 条件在生产模式下不起作用 - Reactjs
- visual-studio-code - VSCode 检索 Bazel 构建目标的问题
- python - 以达到指定信噪比的方式将高斯噪声添加到时间序列中