Php 检测bash中的字符串

Php 检测bash中的字符串,php,linux,string,bash,Php,Linux,String,Bash,好的,通过这段代码,我尝试检测以sample开头的文件- 或以sample.$random 不知道为什么,但样本2不起作用 我尝试检测以sample.**结尾的文件,但它不起作用使用注释中找到的信息,您感兴趣的是此示例不匹配的原因: sample1=`expr "$filename" : '^sample-'` sample2=`expr "$filename" : '.*sample\.[a-zA-Z][a-zA-Z][a-zA-Z]$'` if [ $sample1 -eq "0" ] &a

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

不知道为什么,但样本2不起作用
我尝试检测以sample.**结尾的文件,但它不起作用

使用注释中找到的信息,您感兴趣的是此示例不匹配的原因:

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
   ...
原因是
mp4
[a-zA-Z][a-zA-Z][a-zA-Z]
不匹配。请尝试以下操作:

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


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

请详细解释哪些不起作用。我试过了,两个
expr
命令都运行得很好。所以接下来的想法是文件名以sample开头,或者以sample.mkv或sample.mp4结尾。不要移动文件这里的代码像Ethan,我试过
expr
行,它对我来说很好。请给出一个
文件名
的具体示例,您认为该文件的
expr
行失败。自从我第一次发表评论以来,您的代码更改了三次。我觉得你的问题有点不完整。请更新您的问题,添加正确的代码,告诉我们您的确切输出以及您想要实现的目标。顺便说一句:正确的缩进也会有帮助:-)嗯,我只是做了更多的测试,如果.mp4仍然移动文件if.mkv,那么有趣的是donest@Jonn在计算机中,细节很重要,如果你有特定的文件名,你想知道为什么它们匹配或不匹配某些特定的正则表达式,那么请告诉我细节。
$ expr 'benidorm.s07e06.hdtv.x264-tla-sample.mp4' : '.*sample\.[[:alnum:]][[:alnum:]][[:alnum:]]$'
40