深入探究Shell脚本中的模式匹配、正则表达式与循环结构
1. 利用双括号进行模式匹配
在 if 语句中使用双括号复合语句,可在等式运算符右侧实现类似shell的模式匹配。示例代码如下:
if [[ "${MYFILENAME}" == *.jpg ]]
双括号语法并非传统 test 命令的单括号 [ ,而是较新的 bash 机制(大约从2.01版本开始可用)。它使用的运算符与单括号形式相同,但双括号语法中的等号是更强大的字符串比较器。单等号和双等号在语义上是相同的,不过为强调差异,在进行模式匹配时更推荐使用双等号。
标准模式匹配包含以下规则:
- * :匹配任意数量的字符。
- ? :匹配单个字符。
- [] :包含可能的字符列表。
需要注意的是,这些类似于shell文件通配符,并非正则表达式。若要让模式按模式规则匹配,请勿给模式加引号。
通过开启 bash 的一些额外选项,可获得更强大的模式匹配能力。例如,查找以 .jpg 或 .jpeg 结尾的文件名,可使用以下代码:
shopt -s extglob
if [[ "$FN" == *.@(
超级会员免费看
订阅专栏 解锁全文
1966

被折叠的 条评论
为什么被折叠?



