linux 匹配数字,bash-如何使case语句匹配数字范围?

case word in

[(] pattern1 ) compound-list ;;

[[(] pattern[ | pattern] ... ) compound-list ;;] ...

[[(] pattern[ | pattern] ... ) compound-list]

esac和[解决方案

arg=1

if [ "$arg" -lt 5 ]; then

echo 'less than 5'

elif [ "$arg" -lt 15 ]; then

echo 'less than 15'

elif [ "$arg" -eq 17 ] || [ "$arg" -eq 19 ]; then

echo '17 or 19'

else

echo 'neither'

fi

POSIX 7

Bash遵循[https://stackoverflow.com/a/25482040/895245]所述的POSIX

这是引用:[http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_01]部分“案例条件构造”:

有条件的构造情况应执行与多个模式中的第一个相对应的复合列表(请参见模式匹配表示法)。具有相同复合列表的多个模式应以“ |”分隔 符号。 [...]

案例构造的格式如下:

case word in

[(] pattern1 ) compound-list ;;

[[(] pattern[ | pattern] ... ) compound-list ;;] ...

[[(] pattern[ | pattern] ... ) compound-list]

esac

然后[http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_13]部分“ 2.13。模式匹配表示法”说:

[如果像XBD RE中那样,在方括号中引入方括号表达式

和扩展的正则表达式指向“ 9.3.5 RE括号表达式”部分,其中指出:

方括号表达式(用方括号括起来的表达式“ []”)是一个RE,它必须与一组特定的单个字符匹配,并且可以基于一组非空的匹配特定的一组多字符排序元素。 列出括号表达式中包含的表达式。

因此,当您执行以下操作时,仅考虑单个字符:

[9-10]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值