首页 > 解决方案 > 使用正则表达式时如何修复if语句总是返回假

问题描述

下载种子后,我想根据它是电影还是连续剧来移动它。如果它是一个系列,则名称包含 S 或 s 后跟 2 个数字。对于前 S01。

我用正则表达式尝试了一个简单的 if 命令,但我的代码总是得到错误的结果。

if [[ "$1" =~ ([s|S][0-9][0-9]\w*)\b ]]; then
    mv to series folder command
else
    mv to movies folder command
fi

我向 $1 参数输入什么并不重要,如果结果总是错误的。

标签: regexbash

解决方案


您的匹配表达式不正确 - 要匹配 s 或 S,只需使用 [sS]

if [[ "$1" =~ ([sS][0-9][0-9]*) ]]; then
    echo "series"
else
    echo "movie"
fi

输出:

$ bash del.sh s01
series
$ bash del.sh fff
movie
$ bash del.sh S02
series

推荐阅读