匹配文件名模式

匹配文件名模式

所以我有一个像这样的模式somepattern-abc-1.2.3-aji3mk3-11.tar。我需要添加一个条件

if [ $input matches somepattern[].tar ] 
then 
    do something
fi

这里somepattern将是一个常数,其余的直到“.tar”会变化并且可以有一个连字符、一个字母或一个数字。我可以用什么替换我的 [] 才能让它满意?

答案1

你可以用这个来测试:

input="somepattern-abc-1.2.3-aji3mk3-11.tar"

[[ "$input" =~ ^somepattern[-.a-z0-9]*\.tar$ ]] && echo "match" # here your command

答案2

如果您可以将模式编写为正则表达式,那么您就可以使用bash运算符=~将​​第一个参数与另一侧的正则表达式进行比较。

你可以用类似的东西来测试它:

read a;[[ "$a" =~ "x" ]] && echo $a

其中“x”是您的模式。

相关内容