shell扩展时表达式中的特殊字符[]和*

时间:2014-09-19 11:50:18

标签: bash shell

我在表达式中出现[]时有关于shell扩展的问题如果我创建一个名为test [12]的文件夹,那么在这个文件夹下我有两个文件test1 test2所以当我使用时

echo test\[12\]/*

输出

test[12]/test1 test[12]/test2

但是当我使用

echo test[12]/*

输出

test[12]/*

这里的诀窍是什么,我知道[]是一对特殊字符,但我不知道为什么文件扩展取决于[]!

1 个答案:

答案 0 :(得分:2)

使用echo test\[12\]/*时,它会像test[12]/files一样匹配。

使用echo test[12]/*时,它会与test1/filestest2/file匹配。

当使用[] bash作为字符类处理时,进行扩展并将其视为特殊含义。

使用内部文件创建目录test1,test2来测试它。

它将给出匹配的结果。

尝试使用echo test[12]/*代替echo "test[12]/*

使用echo "test[12]/*"时,它会直接打印内容。