我正在使用shell脚本,我需要区分 tar.gz , gz | bz 等。
我首先提取文件的扩展名,然后尝试使用case
匹配它,我的第一个案例是*tar*
,它应该匹配其扩展名为tar
的文件,因为可以使用相同的命令提取它们。
问题是我尝试匹配gz
bz2
等的下一组陈述。我需要一个匹配bz
或gz2
的案例模式但同时也要检查扩展中是否有tar
。
我对shell模式匹配毫无头绪,并写了[!(tar).*(bz2|bz)$]
(请不要笑)
任何帮助将不胜感激。
答案 0 :(得分:2)
case
按顺序处理,因此如果您首先查找tar
个文件,则不应该转到下一个:
case "${word}" in
*.tar* )
#process tar
:;; #break
*.bz2|*.bz )
#process bz2 and bz
:;; #break
* )
#default
:;;
esac