如何解决在bash shell脚本中检查字符串是否仅包含数字的比较问题
我必须修改bash shell脚本,但是我对bash shell脚本没有太多的经验(我使用过许多其他语言,但是对shell脚本的了解却很少)。
该脚本显示带有“ X”项的菜单,然后提示用户输入数字。
用户输入数字后,我认为脚本会检查输入的数字/字符串以确保它是数字(我认为),然后还要检查数字是否在值的范围内。
我要更改的部分内容是菜单中的项目数,最初有9个项目,但是我需要再添加10个左右。如果输入的数字超过1位,则检查失败。
以下是进行检查的代码段:
while menu && read -rp "$prompt" num && [[ "$num" ]]; do
if [[ "$num" == [[:digit:]] ]] && [[ $num -gt 0 ]] && [[ $num -le ${#service_accounts[@]} ]]; then
我认为失败的“ if”部分是:
[[ "$num" == [[:digit:]] ]]
有人可以告诉我,如果$ num中的字符串超过1位,则比较是否会失败?
而且,如果是这种情况,即使$ num的位数超过1位,如何更改该比较以使其正常工作?
对不起,如果这是一种奇怪的问题:( !!而且,预先感谢!
吉姆
解决方法
[[ "$num" == [[:digit:]] ]]
失败,除了一位数字外,其他所有字符都失败。
这使您的脚本可以接受一到两位数字的数字:
[[ "$num" =~ ^[[:digit:]]{1,2}$ ]]
=~
将$ num与正则表达式^[[:digit:]]{1,2}$
比较。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。