《跟老男孩学习Linux运维:Shell编程实战》之expr和RETVAL
[root@oldboy C06]
# cat 7_5_1.sh
#!/bin/sh
a=$1 ##将脚本命令行的第一个参数赋值给变量a
b=$2 ##将脚本命令行的第二个参数赋值给变量b
#no1 判断传参的个数为2个,如果输入不是两个数,则退出脚本并输出数字1.
if [ $
# -ne 2 ] ;then
echo
"USAGE:$0 NUM1 NUM2"
exit
1
#no2 判断输入的是否是整数
expr
$a + 10 &>
/dev/null ##判断变量a是否是整数
RETVAL1=$? ##获取expr命令的返回值并赋值给RETVAL1
expr
$b + 10 &>
/dev/null ##判断变量b是否是整数
RETVAL2=$? ##获取expr命令的返回值并赋值给RETVAL2
if [
$RETVAL1 -
eq
0 -a $RETVAL2 -
eq
0 ] ;then
echo
"Please input two "
num
" again."
exit
2
#no3 比较两个参数大小
if [ $a -lt $b ] ;then
echo
"$a < $b"
exit
0
#no4
if [ $a -
eq
$b ] ;then
echo
"$a = $b"
exit
0
#no5
if [ $a -gt $b ] ;then
echo
"$a > $b"
fi
说明:
-
expr判断输入的数是否为整数,举例如下:
[root@nginx ~]# a=1.1
[root@nginx ~]# expr $a + 1 &>/dev/null
[root@nginx ~]# RETVAL=$?
[root@nginx ~]# echo $RETVAL
2
上述例子说明,当a不是整数时,我们可以看到它的返回值时2,而不是0!
[root@nginx ~]# a=1
[root@nginx ~]# expr $a + 1 &>/dev/null
[root@nginx ~]# RETVAL=$?
[root@nginx ~]# echo $RETVAL
0
-
expr $a + 10 &>/dev/null
RETVAL1=$?
可以写成:
expr $a + 10 >/dev/null 2>&1
RETVAL=$?
-
/dev/null 相当于windows系统的垃圾箱