Shell 编程中,我们可以使用双中括号运算符 [[]] 和 =~ 来判断字符串是否匹配给定的正则表达式,例如匹配以 lvlv 结尾的字符串:

filelist="lvlvcheck dablelvlv checklvlv"
for file in $filelist
do if [[ $file =~ lvlv$ ]]thenecho $filefi
done

脚本运行输出:

dablelvlv 
checklvlv

注意事项:if [[ $file =~ lvlv$ ]] 中注意有五个空格,而且正则表达式不能使用单引号或者双引号,否则会被当做普通字符串。

这里要吐槽一下,Shell 真的很强大,但是语法又过于苛刻晦涩,少一个空格有时都能让人抓狂,所以书写时要多加留意,严格遵循 Shell 语法要求。

如果想使 Shell if 不匹配指定的正则表达式,可以使用 Shell 的逻辑非运算符感叹号!,同时还是要注意添加5个空格,示例如下:

if [[ ! $file =~ check$ ]]

参考文献

[1] Shell 特殊字符大全