请考虑以下表达式评估:
$ 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 次 |
最近记录: |