有人可以向我解释在这些情况下反斜杠是如何工作的吗?
我知道如果您输入1 \,它将转到下一行(转义\ n)。如果输入2 \,则显示一个反斜杠,因为另一个反斜杠已转义。
我不明白的是为什么输入4个反斜杠只给您1个而不是2个?还是为什么输入8个反斜杠只给您2个而不给您4个?谢谢!
sh-3.2$ echo \\
\
sh-3.2$ echo \\\\
\
sh-3.2$ echo \\\\\\
\\
sh-3.2$ echo \\\\\\\\
\\
答案 0 :(得分:1)
此行为与内置的标准echo
不匹配。您的echo
命令可能是别名echo -e
的别名,它解释转义的序列:
使用echo \\\\
,shell将两个连续的\视为单个\字符(第一个转义第二个\),并使用字符串{{1}调用echo
}作为参数。字符串\\
正常打印。
使用\\
,外壳程序执行相同的工作,但是echo -e \\\\
在其参数(echo
)中搜索转义的字符,然后再次对其进行解释。因此,两个连续的\\
仅显示一个\
。这就是打印字符串\
的原因。
您可以检查\
的别名是否内置echo
:
type
您可以通过两种方式强制使用内置的$ type echo
echo is a shell builtin
$ alias echo='echo -e'
$ type echo
echo is aliased to `echo -e'
:
echo