【shell】Linux shell 之 判断用户输入的变量是否为数字

时间:2024-05-22 16:28:07

本文内容:判断用户输入的参数是否为数字

在shell中如何进行计算?

方式一

[[email protected] scripts]# echo $((1+2))  
3

方式二

[[email protected] scripts]# expr 2 + 3
5
[[email protected] scripts]# 

注意:使用方式二的时候,要求必须要有间隔。如果使用的是乘法,号必须进行转义写为 \

[[email protected] scripts]# expr 2 * 3
expr: 语法错误
[[email protected] scripts]# expr 2 \* 3
6
[[email protected] scripts]# 

如何判断用户输入的变量值是否为数字?

首先大家先来看一下使用echo 进行计算的时候,字符 + 数字会是什么效果。

[[email protected] scripts]# echo $((a+1))
1
[[email protected] scripts]# echo $((a+2))
2

在这个例子中,shell 会把字符当做0来计算,如果我们想判断用户输入的是否为数字,那就可以使用 echo $((变量+1))去判断,如果为1,那么用户输入的为字符,如果为数字,那么结果不为1.
但是这样会有个问题,假如用户输入的数字为0呢?

使用方式二解决

[[email protected] scripts]# expr b + 3
expr: 非数值参数

假设用户输入的参数为字符,那么使用expr就会计算失败,这时候 $? 就不为0,那么我们只需要看 $? 是否为0即可判断用户输入的参数是否为数字了。

例子

#!/bin/bash -

read -p "Please enter a number:" number
expr $number + 1 >/dev/null 2>&1
[ $? -ne 0 ] && echo " $number is not number" || echo "$number is a  number"

执行结果

[[email protected] scripts]# bash intnumber.sh 
Please enter a number:1
1 is a  number
[[email protected] scripts]# bash intnumber.sh 
Please enter a number:a
 a is not number

版权所有:arppinging

欢迎关注的我的个人微信公众号

【shell】Linux shell 之 判断用户输入的变量是否为数字