shell 如何判断用户从键盘输入的变量是否为数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell 如何判断用户从键盘输入的变量是否为数字相关的知识,希望对你有一定的参考价值。

在bash shell当中其实是没有直接的命令去判断变量是否为一个纯数字的,那么我们就是用间接的方法:

问题描述:

    read -t 30 -p "Please a number: " NUM

    使用read命令接受用户从键盘输入一个变量,保存在变量NUM当中,有时候用户瞎输入一通,或者不输入,这对脚本的执行会有影响,顾提前判断一下,较好也是必要的,那么怎么判断呢?

    方法一:

        将NUM变量做进一步处理:

        STRING=`echo ${NUM}|sed ‘sS^.*[0-9]$SS‘` 将${NUM}交给sed命令处理一下,以任意数字开头任意数字结尾的替换成空,再针对替换后的结果做处理。即

${STRING} 为空则${NUM}为纯数字,否则不是纯数字...


实例演示:

#!/bin/bash

read -t 10 -p "Please input a number: " NUM


STRING=`echo ${NUM} |sed ‘sS^[0-9].*$SS‘ `


[[ -z ${STRING} ]] && echo true || echo false

技术分享

执行如下:

技术分享


    方法二:也是推荐的一种 

        将${NUM}匹配成数字模式 即=~^[0-9]+$

实例演示:

    

#!/bin/bash

read -t 10 -p "Please input a number: " NUM


[[ ${NUM} =~ ^[0-9]+$ ]] && echo true || echo false

 

技术分享


执行结果:


技术分享






本文出自 “linux相关技术” 博客,谢绝转载!

以上是关于shell 如何判断用户从键盘输入的变量是否为数字的主要内容,如果未能解决你的问题,请参考以下文章

怎么样判断一个变量是数字或字符 shell

题目:从键盘输入一个不超过五位的整数,判断它是否为回文数,例如12321是一个回文数

shell整理(29)===判断用户输入可不可以作为变量

shell脚本如何判断变量为数字?

shell随笔

shell中怎么判断输入的是不是是数字?