为什么回显\\\\显示\

时间:2019-05-07 11:59:25

标签: shell backslash

有人可以向我解释在这些情况下反斜杠是如何工作的吗?

我知道如果您输入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 \\\\\\\\
\\

1 个答案:

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