Bash中的动态案例陈述

时间:2011-10-20 18:06:39

标签: regex bash dynamic case

我将如何写作:

PreviousInput='@(User1 | User2 | User3)*#channel'
###############################
Expression="*${PreviousInput}*"
case $Input in
    $Expression ) 
        Do_Something ;;
    *)
        Do_Something_Else ;;
esac

我真的想使用case语句,因为我已经在case语句中投入了很多逻辑,并且真的不想重写它。我在想,不知怎的,我可以使用glob模式,但我真的不知道如何做到这一点。有什么建议?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

bash手册说:

  

使用波浪扩展,参数和扩展检查每个检查的模式   变量扩展,算术替换,命令替换,   和流程替代。

所以我认为你的例子不应该完全等同于

case $Input in
    *@(User1 | User2 | User3)*#channel* ) 
        Do_Something ;;
    *)
        Do_Something_Else ;;
esac
如果你设置了shopt -s extglob,那么

应该做你想要的,就像shellter所说的那样。