LinuxSir.cn,穿越时空的Linuxsir!

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

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

[复制链接]
发表于 2008-1-8 18:01:35 | 显示全部楼层 |阅读模式
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-8 18:14:05 | 显示全部楼层
try

  1. eval ls $A
复制代码
回复 支持 反对

使用道具 举报

发表于 2008-1-8 20:15:43 | 显示全部楼层
or:
A=`echo file.{a,b,c}.*`
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-14 14:12:39 | 显示全部楼层
谢谢二位, 神奇的eval
回复 支持 反对

使用道具 举报

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

本版积分规则

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