regex - 使用正则表达式时如何修复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 参数输入什么并不重要,如果结果总是错误的。
解决方案
您的匹配表达式不正确 - 要匹配 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
推荐阅读
- powershell - 使用 powershell 从共享点下载特定文件夹的 CAML 查询
- c++ - 找到从**根到叶**的二叉树的所有节点,其总和等于目标总和
- c# - 如何在不知道文件路径的情况下使用 C# 在 Outlook 中找到实现文件夹
- python - Tensorflow 2.0:自定义 keras 指标导致 tf.function 回溯警告
- javascript - 如何让这个 div 在屏幕的一半上滑动?
- python - 为什么在存储 fetchone() 值时显示 TypeError?
- c# - 如何获取具有特定扩展名的所有文件,而不会导致 IOException 告诉我我要访问的文件仍在使用中
- xcode - Xcode 助手“迅速”消耗大量内存
- windows - 在 SFTP 批处理文件中包含密码
- android - 新频道默认禁用通知声音