如何使 case 语句匹配数字范围?

2024-05-14

我正在运行一个列号范围为 0 - 50 的开关案例。现在每个案例都支持离散列号,我观察到它的失败。

这是代码:

    i=10
    a=1
    b=0.65
    if [ "$a" != "$b" ]; then 
       case $i in  
            [1]|[2]|[5]) echo "Not OK"; ;; 
            [9-10]|[12]) echo "may be ok"; ;; 
            *) echo "no clue - $i"; ;; 
       esac
   fi

我期望这段代码输出may be ok但得到no clue - 10.


Bash case不适用于数字范围。[]用于贝壳图案。

例如这个案例[1-3]5|6)适用于 15 或 25 或 35 或 6。

您的代码应如下所示:

i=10
a=1
b=0.65
if [ "$a" != "$b" ] ; then
   case $i in
        1|2|5) echo "Not OK"; ;;
        9|10|12) echo "may be ok"; ;;
        *) echo "no clue - $i"; ;;
   esac;
fi

If i can be real between9 和 10 那么你需要使用if(而不是大小写)带有范围。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 case 语句匹配数字范围? 的相关文章

随机推荐