Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell zsh中的双反斜杠被解释为单反斜杠(';\\\';->;\)_Shell_Command Line_Escaping_Zsh_Oh My Zsh - Fatal编程技术网

Shell 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 '\\'

在zsh中:

我希望单引号之间的字符串根本不会被解释,(bash将显示//)。所以我想知道为什么zsh把这里的双反斜杠变成了单反斜杠

也许这是我可以设置的选项

>> 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