case + 如何在 case 语法中实现等于或小于或大于

case + 如何在 case 语法中实现等于或小于或大于

我的目标是用(仅用-case + esac)验证数字的范围,并打印该范围

例如

如果数字在 0-80 之间,则会打印案例

 >=0<=80

或者如果范围在 81-100 之间,则将打印案例

 >=81<=100

等等....

我的脚本的问题在于仅当数字介于 0-9 之间时才打印 >=0<=90?

如何修复我的脚本,以便它能够根据数字范围打印?

#!/bin/ksh

read number 

case $number in 
    [0-80])  echo ">=0<=80";; 
    [81-100]) echo ">=81<=100";; 
    [101-120]) echo ">=101<=120";;
    [121-300]) echo ">=121<=300";;
esac 

答案1

在 zsh 中(在我的系统上 ksh 是符号链接的),您需要使用<>数值范围:

case $number in
    <0-80>)  echo ">=0<=80";;
    <81-100>) echo ">=81<=100";;
    <101-120>) echo ">=101<=120";;
    <121-300>) echo ">=121<=300";;
esac

相关内容