【发布时间】:2019-10-18 06:10:36
【问题描述】:
所以要给stdout写一个反斜杠你做
zsh$ echo \\
\
你会认为要输出 2 个反斜杠,你需要运行这个:
zsh$ echo \\\\
\
错误,您需要 6 或 8 个:
zsh$ echo \\\\\\
\\
zsh$ echo \\\\\\\\
\\
为什么我需要 8 个反斜杠?
不同shell中的行为:
ksh$ echo \\\\
\\
zsh$ echo \\\\
\
bash$ echo \\\\
\\
sh$ echo \\\\
\
csh$ echo \\\\
\\
【问题讨论】:
-
wrt
to write a backslash to stdout you do echo \\- 不,要在 stdout 上写一个反斜杠,你要echo '\'写两个反斜杠是echo '\\'。除非您需要使用双引号(例如,让变量扩展),否则始终使用单引号脚本和字符串,然后始终使用双引号,除非您不需要使用任何(例如,允许通配符)。添加缺少的引号,重新运行您的命令,然后询问您是否还有问题。 -
@EdMorton 哦,我的上帝 ???? ,我不知道单引号是不可避免的。我以为单引号和双引号是一样的。你刚刚为我节省了很多时间(和反斜杠)
-
单引号与双引号之间以及引号与不引号之间存在巨大的差异。见mywiki.wooledge.org/Quotes
-
\\和'\'是等价的;引号只是转义引号之间每个字符的快捷方式。