奇怪的“回声”行为

奇怪的“回声”行为

在做一些工作时,我遇到了这个

$ echo [Login]
  g
$ echo [kilo]
  k
$ echo [gauke]
  e g k
$ echo [quasi-star]
  k m q

后台发生了什么导致此输出?输出echo [quasi-star]只是失去了理智,给出了根本不存在的字母。

笔记:是的,我知道我可以得到我的输出echo "[Login]"

答案1

如果没有引号,shell 将对字符类 进行路径名(glob)扩展[],因此可能在当前目录中有名为e, g, k, m,的文件q- 这就是结果。

echo基本上只是打印路径名扩展的结果,仅此而已。


让我们举一个例子echo [quasi-star]

for 的扩展结果[quasi-star]将是 from 的任何单个字符quasijklmnopqrstar(有意保留重复项)。从 shell 的角度来看,由于没有周围的字符,因此它只会匹配扩展中当前目录上的任何单个字符文件名。

相关内容