请考虑以下表达式评估:
$ echo .
.
$ echo .[]
.[]
$ echo .[].
.[].
$ echo .[].[]
.. # <- WAT??
$ echo .[].[].
.[].[].
$ echo .[].[].[]
.[].[].[]
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么.[].[]有这种特殊行为吗?
(经过bash 3.2.57(1)-release (x86_64-apple-darwin18)和4.4.23(1)-release (arm-unknown-linux-androideabi)。
我怀疑这与..有效的“文件”(父目录)有关。但是,为什么不.[].产生相同的结果呢?
cho*_*oba 10
那是因为[]创建了一个字符类。通常,]必须对此进行转义(反斜杠)才能包含在该类中,但是如果它紧跟在开括号之后,则不必进行转义。因此,[].[]实际上装置[\].[]相匹配的任意字符.,]和[。
您可以通过创建名为.]和的文件来进行验证.[。
touch .\[ .\]
echo .[].[] # .. .[ .]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |