在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
版权所有:arppinging
欢迎关注的我的个人微信公众号