免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: xxccbb
打印 上一主题 下一主题

shell case的问题 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2009-03-14 10:47 |只看该作者
谢谢各位,目前问题已解决。

方法是:

先用expr对变量求值,后再赋值回原变量中,这样就可以过滤掉前导的任意个数字0,然后与case语句中的项进行匹配,
这样,匹配项就可以写成100),而不用考虑前导0的影响了。

但用expr时,发现一个问题,就是

若t=000000100

执行t=`expr $t`,结果为:t=000000100

为什么不是t=100?

请教各位了。

论坛徽章:
0
22 [报告]
发表于 2009-03-14 10:58 |只看该作者
[root@Mylinux tmp]# t=00100;t=`expr $t + 0`;echo $t
100


[root@Mylinux tmp]# cat mysh
#!/bin/bash
# ex1
# /bin/bash
s=100
t=0000000000100
s1=`echo $s|awk '/^0*100$/{print "Y"}'`
t1=`echo $t|awk '/^0*100$/{print "Y"}'`
case $s1 in
  "Y") echo "s is good" ;;
    *) echo "s is no match" ;;
esac

case $t1 in
  "Y") echo "t is good" ;;
    *) echo "t is no match" ;;
esac
[root@Mylinux tmp]# ./mysh
s is good
t is good

论坛徽章:
0
23 [报告]
发表于 2009-03-14 11:09 |只看该作者

回复 #22 ywlscpl 的帖子

我也发现了在用expr的时候必须要计算才行。谢谢风云使者提供的用正则表达式的方法,但看起来还是先计算比较简便些。

另外,请问:

在linux shell 的case语句中,各个匹配项是不是正则表达式?为什么用“[0-9]”这样的形式可以匹配数字,而用“[0-9]+”或“^[0-9]”的形式却不行?

再次谢谢了。

论坛徽章:
0
24 [报告]
发表于 2009-03-14 11:17 |只看该作者

回复 #23 xxccbb 的帖子

不是正则

论坛徽章:
0
25 [报告]
发表于 2009-03-14 11:29 |只看该作者

论坛徽章:
0
26 [报告]
发表于 2009-03-14 11:34 |只看该作者

回复 #24 oldoger 的帖子

若不是正则表达式,那是什么?

论坛徽章:
0
27 [报告]
发表于 2009-03-14 11:38 |只看该作者

回复 #26 xxccbb 的帖子

了解了 wildcard 的擴展與重組特性後, 接下來, 讓我們了解一些常見的 wildcard 吧:
*: 匹配 0 或多個字元
?: 匹配任意單一字元

http://bbs.chinaunix.net/viewthr ... ;page=16#pid2930144
麻烦你看一下十三问吧

论坛徽章:
0
28 [报告]
发表于 2009-03-14 12:18 |只看该作者

回复 #27 oldoger 的帖子

非常感谢。

论坛徽章:
0
29 [报告]
发表于 2011-10-12 17:34 |只看该作者
{:3_182:}{:2_166:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP