UNIX CASE语句中的模式匹配 [英] Pattern matching in UNIX Case statement
本文介绍了UNIX CASE语句中的模式匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用的shell脚本需要区分tar.gz、gz|bz等。
我首先提取文件的扩展名,然后尝试使用case
进行匹配,我的第一个案例是*tar*
,它应该将文件与其扩展名中的tar
相匹配,因为它们可以使用相同的命令提取。
问题是我尝试匹配gz
bz2
等的下一组语句。我需要匹配bz
或gz2
的大小写模式,但同时还要检查扩展中是否没有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屋!
查看全文