Shell zsh中的双反斜杠被解释为单反斜杠(';\\\';->;\)
在zsh中: 我希望单引号之间的字符串根本不会被解释,(bash将显示//)。所以我想知道为什么zsh把这里的双反斜杠变成了单反斜杠 也许这是我可以设置的选项Shell zsh中的双反斜杠被解释为单反斜杠(';\\\';->;\),shell,command-line,escaping,zsh,oh-my-zsh,Shell,Command Line,Escaping,Zsh,Oh My Zsh,在zsh中: 我希望单引号之间的字符串根本不会被解释,(bash将显示//)。所以我想知道为什么zsh把这里的双反斜杠变成了单反斜杠 也许这是我可以设置的选项 >> echo '\\' \ 您可能会注意到,zsh有自己的内置echo,因此您可以通过-e/-e选项控制期望的行为。看 默认情况下,echo在zsh中与POSIX兼容,这意味着echo本身将特别处理以\开头的某些字符对。诚然,在单引号中,没有任何内容被转义。单个反斜杠可以出现在单引号内: ➜ ~ echo -E '\\'
>> echo '\\'
\
您可能会注意到,zsh有自己的内置echo,因此您可以通过-e/-e选项控制期望的行为。看
默认情况下,
echo
在zsh
中与POSIX兼容,这意味着echo
本身将特别处理以\
开头的某些字符对。诚然,在单引号中,没有任何内容被转义。单个反斜杠可以出现在单引号内:
➜ ~ echo -E '\\'
\\
➜ ~ echo -e '\\'
\
➜ ~ echo -e '//'
//
➜ ~ echo -E '//'
//
➜ ~
还可以使用'\\'
将两个反斜杠传递给echo
。但是,现在echo
本身将\\
视为表示单个反斜杠的一对,因为某些其他对是经过特殊处理的。举两个例子,\t
表示一个水平选项卡
% echo '\'
\
而\n
表示换行符
% echo 'a\tb'
a b
这意味着要能够打印两个字符\
和n
,例如,您需要某种方法来指定反斜杠,而不必转义下面的n
。这种方法适用于\
:
% echo 'a\nb'
a
b
OP声称从
echo'/'
中获得一个斜杠。这并没有解释这是如何实现的。此外,$SHELL
的值不会告诉您当前正在运行的SHELL,只告诉您作为登录SHELL的SHELL。无法复制。你确定你没有想到会输出一个反斜杠的echo'\\\'
?@chepner哎哟,事实恰恰相反。很抱歉
% echo 'a\nb'
a
b
% echo '\\n'
\n