本文内容: 判断用户输入的参数是否为数字
在 shell 中如何进行计算?
方式一
- [root@XiaoPeng scripts]# echo $((1+2))
- 3
方式二
- [root@XiaoPeng scripts]# expr 2 + 3
- 5
- [root@XiaoPeng scripts]#
注意: 使用方式二的时候, 要求必须要有间隔如果使用的是乘法, 号必须进行转义写为 \
[root@XiaoPeng scripts]# expr 2 * 3
expr: 语法错误
- [root@XiaoPeng scripts]# expr 2 \* 3
- 6
- [root@XiaoPeng scripts]#
如何判断用户输入的变量值是否为数字?
首先大家先来看一下使用 echo 进行计算的时候, 字符 + 数字会是什么效果
- [root@XiaoPeng scripts]# echo $((a+1))
- 1
- [root@XiaoPeng scripts]# echo $((a+2))
- 2
在这个例子中, shell 会把字符当做 0 来计算, 如果我们想判断用户输入的是否为数字, 那就可以使用 echo $((变量 + 1)) 去判断, 如果为 1, 那么用户输入的为字符, 如果为数字, 那么结果不为 1.
但是这样会有个问题, 假如用户输入的数字为 0 呢?
使用方式二解决
[root@XiaoPeng 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"
** 执行结果 **
- [root@XiaoPeng scripts]# bash intnumber.sh
- Please enter a number:1
- 1 is a number
- [root@XiaoPeng scripts]# bash intnumber.sh
- Please enter a number:a
- a is not number
来源: http://www.bubuko.com/infodetail-2538565.html