LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1069|回复: 1

shell, 变量是文件名并包含通配符, 变量展开时无法匹配的问题

[复制链接]
发表于 2008-1-7 16:57:40 | 显示全部楼层 |阅读模式
shell, 变量是文件名并包含通配符, 变量展开时无法匹配的问题

[maj@linux.test.machine tmp]$ ls
file.a.0  file.a.3  file.a.6  file.a.9  file.b.2  file.b.5  file.b.8  file.c.1  file.c.4  file.c.7
file.a.1  file.a.4  file.a.7  file.b.0  file.b.3  file.b.6  file.b.9  file.c.2  file.c.5  file.c.8
file.a.2  file.a.5  file.a.8  file.b.1  file.b.4  file.b.7  file.c.0  file.c.3  file.c.6  file.c.9
[maj@linux.test.machine tmp]$ A="file.{a,b,c}.*"
[maj@linux.test.machine tmp]$ ls $A
ls: file.{a,b,c}.*: No such file or directory
[maj@linux.test.machine tmp]$ A=file.{a,b,c}.*  
[maj@linux.test.machine tmp]$ ls $A
ls: file.{a,b,c}.*: No such file or directory
[maj@linux.test.machine tmp]$ A="file.[abc].*"      
[maj@linux.test.machine tmp]$ ls $A
file.a.0  file.a.3  file.a.6  file.a.9  file.b.2  file.b.5  file.b.8  file.c.1  file.c.4  file.c.7
file.a.1  file.a.4  file.a.7  file.b.0  file.b.3  file.b.6  file.b.9  file.c.2  file.c.5  file.c.8
file.a.2  file.a.5  file.a.8  file.b.1  file.b.4  file.b.7  file.c.0  file.c.3  file.c.6  file.c.9

从上述命令看出, 使用{}通配在变量里面赋值会失败, 但是用[]通配就会成功, 这个问题困扰了我好久, 这次是a,b,c下次要是a, ab,  abc, 可咋整啊?
怎样才能让{}生效啊?
 楼主| 发表于 2008-1-7 17:00:28 | 显示全部楼层

shell, 变量是文件名并包含通配符, 变量展开时无法匹配的问题

shell, 变量是文件名并包含通配符, 变量展开时无法匹配的问题

[maj@linux.test.machine tmp]$ ls
file.a.0  file.a.3  file.a.6  file.a.9  file.b.2  file.b.5  file.b.8  file.c.1  file.c.4  file.c.7
file.a.1  file.a.4  file.a.7  file.b.0  file.b.3  file.b.6  file.b.9  file.c.2  file.c.5  file.c.8
file.a.2  file.a.5  file.a.8  file.b.1  file.b.4  file.b.7  file.c.0  file.c.3  file.c.6  file.c.9
[maj@linux.test.machine tmp]$ A="file.{a,b,c}.*"
[maj@linux.test.machine tmp]$ ls $A
ls: file.{a,b,c}.*: No such file or directory
[maj@linux.test.machine tmp]$ A=file.{a,b,c}.*  
[maj@linux.test.machine tmp]$ ls $A
ls: file.{a,b,c}.*: No such file or directory
[maj@linux.test.machine tmp]$ A="file.[abc].*"      
[maj@linux.test.machine tmp]$ ls $A
file.a.0  file.a.3  file.a.6  file.a.9  file.b.2  file.b.5  file.b.8  file.c.1  file.c.4  file.c.7
file.a.1  file.a.4  file.a.7  file.b.0  file.b.3  file.b.6  file.b.9  file.c.2  file.c.5  file.c.8
file.a.2  file.a.5  file.a.8  file.b.1  file.b.4  file.b.7  file.c.0  file.c.3  file.c.6  file.c.9

从上述命令看出, 使用{}通配在变量里面赋值会失败, 但是用[]通配就会成功, 这个问题困扰了我好久, 这次是a,b,c下次要是a, ab,  abc, 可咋整啊?
怎样才能让{}生效啊?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表