php - 检测 bash 中的字符串

标签 php linux string bash

sample1=`expr "$filename" : '^sample-'`
sample2=`expr "$filename" : '.*sample\.[a-zA-Z][a-zA-Z][a-zA-Z]$'`
if [ $sample1 -eq "0" ] && [ $sample2 -eq "0" ] && [[ `lsof -c unrar | grep $f` == "" ]] && [[ `lsof -c unzip | grep $f` == "" ]]
then
   ...

好的,通过这段代码,我尝试检测以sample-开头的文件 或以 sample.$random

结尾

不知道为什么,但sample2不工作 我尝试检测以 example.*** 结尾的文件,但它不起作用

最佳答案

使用评论中找到的信息,您会对这个示例不匹配的原因感兴趣:

$ expr 'benidorm.s07e06.hdtv.x264-tla-sample.mp4' : '.*sample\.[a-zA-Z][a-zA-Z][a-zA-Z]$'
0

原因是mp4[a-zA-Z][a-zA-Z][a-zA-Z]不匹配。请尝试以下操作:

$ expr 'benidorm.s07e06.hdtv.x264-tla-sample.mp4' : '.*sample\.[[:alnum:]][[:alnum:]][[:alnum:]]$'
40

这就成功了。

另外,请注意,在现代的 unicode 字体世界中,不应使用诸如 [a-zA-Z] 之类的正则表达式。如果您想匹配字母,请改用 [[:alpha:]] 等字符类。

关于php - 检测 bash 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28376387/

相关文章:

c++ - 你如何在 Linux 上用 C++ 播放或录制音频(到 .WAV)?

c - Linux/Windows 中的 sleep()/Sleep() 行为

Python - 字符串搜索

python - 将资源下载到多个 Apache 服务器上? [Linux操作系统]

php - 如何使用更新资源 Controller laravel 4?

php - MYSQL排序和限制使用某一行并选择上一行和下一行

php - CakePHP 2 - 手动登录不添加到 session

c++ - WINFORM C++ Managed string->unmanaged string 在与 fstream 结合使用时产生意外结果

C# 比较两个字符串的匹配词

PHP Mysqli 查询不断返回 false