《跟老男孩学习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
fi
#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
fi
#no3 比较两个参数大小
if [ $a -lt $b ] ;then
     echo  "$a < $b"
     exit  0
fi
#no4
if [ $a - eq  $b ] ;then
     echo  "$a = $b"
     exit  0
fi
#no5
if [ $a -gt $b ] ;then
     echo  "$a > $b"

fi


说明:


  1. 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

  2. expr $a + 10 &>/dev/null           

    RETVAL1=$? 

    可以写成:

    expr $a + 10 >/dev/null 2>&1

    RETVAL=$?

    wKiom1lbQ5vRLP7lAAArxKayEls442.png

  3. /dev/null 相当于windows系统的垃圾箱