UNIX CASE语句中的模式匹配 [英] Pattern matching in UNIX Case statement

查看:22
本文介绍了UNIX CASE语句中的模式匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的shell脚本需要区分tar.gzgz|bz等。

我首先提取文件的扩展名,然后尝试使用case进行匹配,我的第一个案例是*tar*,它应该将文件与其扩展名中的tar相匹配,因为它们可以使用相同的命令提取。

问题是我尝试匹配gzbz2等的下一组语句。我需要匹配bzgz2的大小写模式,但同时还要检查扩展中是否没有tar

我对外壳模式匹配一无所知,我写了这个[!(tar).*(bz2|bz)$](请不要笑)

如有任何帮助,我们将不胜感激。

推荐答案

case按顺序处理,所以如果您先查找tar文件,应该不会转到下一步:

case "${word}" in
  *.tar* )
    #process tar
    :;; #break
  *.bz2|*.bz )
    #process bz2 and bz
    :;; #break
  * )
    #default
    :;;
esac

这篇关于UNIX CASE语句中的模式匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆