我在表达式中出现[]时有关于shell扩展的问题如果我创建一个名为test [12]的文件夹,那么在这个文件夹下我有两个文件test1 test2所以当我使用时
echo test\[12\]/*
输出
test[12]/test1 test[12]/test2
但是当我使用
时echo test[12]/*
输出
test[12]/*
这里的诀窍是什么,我知道[]是一对特殊字符,但我不知道为什么文件扩展取决于[]!
答案 0 :(得分:2)
使用echo test\[12\]/*
时,它会像test[12]/files
一样匹配。
使用echo test[12]/*
时,它会与test1/files
,test2/file
匹配。
当使用[]
bash作为字符类处理时,进行扩展并将其视为特殊含义。
使用内部文件创建目录test1,test2来测试它。
它将给出匹配的结果。
尝试使用echo test[12]/*
代替echo "test[12]/*
。
使用echo "test[12]/*"
时,它会直接打印内容。