我怀疑shell脚本
我将描述这个场景,$ file包含我感兴趣的文件名,
考虑$ file可以包含foo.1,foo.2,foo.3这里foo将是常量,
但.1,.2,.3会改变,我想在if语句中用单行测试这个
if [ $file = "foo.[1-9]" ]; then
echo "File name is $file"
fi'
我知道上面的脚本不起作用:)任何人都可以建议我应该参考什么?
答案 0 :(得分:1)
修剪任何扩展名,然后查看它是否" foo"?
base=${file%.[1-9]}
if [ "$base" = "foo" ]; then
echo Smashing success
fi
同样,我总是推荐case
,因为它具有便携性和通用性。
case $file in
foo.[1-9] ) echo Smashing success ;;
esac
一开始语法看起来很奇怪,但值得了解。
这两种技术都可以移植到任何兼容Bourne的shell,包括Dash和POSIX sh
。
答案 1 :(得分:0)
使用[[
代替正则表达式匹配。
if [[ $file =~ ^foo\.[1-9]$ ]] ; ...