You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Bash单引号会将\n解析为换行符?

Bash单引号中\n被解析为换行的原因及影响字符

问题原因

这不是Bash单引号的解析问题,而是你使用的echo命令是BSD风格的实现(macOS自带的bash 3.2配套的就是BSDecho)。

Bash严格遵循了单引号规则——把'a\nb'原封不动传递给了echo命令,但BSDecho默认会自动解析字符串中的转义字符,所以它把接收到的\n转换成了换行符输出。

如果要验证Bash的单引号行为,可用printf替代echo执行:

printf '%s\n' 'a\nb'

输出会是a\nb,因为printf默认不会解析转义字符,完全按字面输出。

受影响的字符

BSDecho默认会解析以下转义字符:

  • \n:换行符
  • \t:水平制表符
  • \b:退格符
  • \r:回车符
  • \v:垂直制表符
  • \c:终止后续输出(例如执行echo 'hello\cworld'只会输出hello)
  • \\:输出反斜杠本身

补充说明:Linux系统上的GNUecho默认不会解析转义字符,必须添加-e选项才会处理,因此在Linux上执行echo 'a\nb'会直接输出a\nb,符合Bash单引号的字面保留规则。

内容的提问来源于stack exchange,提问作者peterjwest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 15:42:05