首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么zsh中的"\\“等于”\\“?

为什么zsh中的"\\“等于”\\“?
EN

Stack Overflow用户
提问于 2019-06-02 11:36:19
回答 2查看 136关注 0票数 1

因此,要为stdout编写反斜杠,您可以这样做

代码语言:javascript
复制
zsh$ echo \\
\

您可能认为要输出2个反斜杠,需要运行以下命令:

代码语言:javascript
复制
zsh$ echo \\\\
\

错误的,您需要6或8:

代码语言:javascript
复制
zsh$ echo \\\\\\
\\
zsh$ echo \\\\\\\\
\\

,为什么我需要8个反斜杠?

在不同壳中的行为:

代码语言:javascript
复制
ksh$ echo \\\\
\\
zsh$ echo \\\\
\
bash$ echo \\\\
\\
sh$ echo \\\\
\
csh$ echo \\\\
\\

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-02 15:07:52

您可能已经习惯了bash的内置echo,它不执行转义序列的扩展。然而,POSIX echo是这样的。zsh遵循POSIX规范,所以当您编写echo \\\\\\时,会发生这样的情况。

  1. 移除引号可以将\\\\\\简化为\\\;每个转义\都会变成一个文字\
  2. echo接受它收到的三个\,并将第一个\\替换为\。其余的\并不先于任何东西,因此它是按字面处理的。
  3. 最后的结果是两个\的输出。

对于echo \\\\\\\\,下面是所发生的事情。

  1. 和以前一样,\\\\\\\\变成了\\\\,因为每对反斜杠在移除引号后都变成了一个\
  2. echo接受4个反斜杠,并将第一个\\替换为\,第二个\\也替换为\,因为这一次它收到了两个匹配的对。
  3. 最后的结果再次是两个\

bash可能继承了ksh的非POSIX特性,从定义上讲,sh是一个POSIX兼容的外壳,最好不要考虑csh正在做什么。

票数 4
EN

Stack Overflow用户

发布于 2019-06-02 12:01:30

不仅是zsh,它在终端中的默认行为,反斜杠(\)是一个特殊字符,用于告诉bash脚本您想要换行中的其他参数/文本,因此为了避免换行符,您需要添加另一个反斜杠来转义特殊字符,因为反斜杠也用于转义特殊字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56414633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档