bash中如何实现条件判断?


条件测试类型:

    整数测试

    字符测试

    文件测试

条件测试的表达式:

[ 表达式 ]

[[ 表达式 ]]

test 表达式(expression)



一、整数比较:

-eq:测试两个整数是否相等

[root@localhost ~]# A=3     定义变量A=3

[root@localhost ~]# B=6      定义变量B=6

[root@localhost ~]# [ $A -eq $B ]   判断A是否等于B

[root@localhost ~]# echo $?         输出返回值

1                                  返回值为1 证明条件为假   A不等于B

-ne:测试两个整数是否不等 不等,为真:相等,为假


[root@localhost ~]# A=5

[root@localhost ~]# B=6

[root@localhost ~]# [ $A -ne $B ]

[root@localhost ~]# echo $?       不等为真

0

[root@localhost ~]# B=5

[root@localhost ~]# [ $A -ne $B ]

[root@localhost ~]# echo $?       等为假

1

[root@localhost ~]#



    -gt:测试一个数  是否大于一个数   大于为真   否则为假

-lt:测试一个数是否小于一个数    小于为真   否则为假

-ge:大于或等于

-le:小于或等于


命令之间的逻辑关系:

    逻辑与:一假即假:  第一个条件为假时,第二个条件不用再判断,最终结果已有

                    第一个条件为真时,第二个条件必须判断

   &&符号表示

例如:如果用户user5存在,就不需要添加

  id user5 && useradd user5   前面为真,后面不需要执行

逻辑或 :

   ||  符号表示

    如果用户user6不存在就添加user6

  id user6 || useradd user6


二、字符串比较
   字符串比较:

字符串测试

    常用的符号

==或=  判断两个字符串是否相等 相等为真  不等为假

等号两端要有空格

[root@localhost ~]# A=hello

[root@localhost ~]# B=hi

[root@localhost ~]# [ $A == $B ]

[root@localhost ~]# echo $?

1

[root@localhost ~]#

!=  测试连个是否不等    不等为真相等为假

-n :测试指定字符串是否为空  空则真  不空为假

-s  :测试指定的字符串是否为不空   不空为真  空位假


三、文件测试

    常用的需要测试

-e 文件名或者文件路径    测试文件是否存在

[root@localhost ~]# [ -e /etc/inittab ]   测试/etc/inittab 文件是否存在的

[root@localhost ~]# echo $?

0


-f                       测试文件是否为普通文件

-d                       测试指定路径是否为目录的

-r                       测试当前用户对指定文件是否有读取权限

-w                                                    写入权限

-x                                                    执行权限

[root@localhost ~]# [ -x /etc/rc.d/rc.sysinit ]  测试当前用户是否对etc/rc.d/rc.sysinit文件是否有执行权限

[root@localhost ~]# echo $?

0



四、if语法

if 判断条件 0为真 其他都为假

单分支if语句
if 判断条件;then
statement1
statement2
.......
fi

双分支的if语句:
if 判断条件;then
statement1
statement2
.....
else
statement3
statement4
fi


五、脚本实例

练习,写一个脚本,完成以下要求

    给定一个用户

1,如果其UID为0,就显示此为管理员

2,否则,就显示其为普通用户

#!/bin/bash

#

USER=user1                    定义一个变量USER

if id $USER $> /dev/null ;then   判断用户user1是否存在

    echo "$USER exists."           用户存在就显示  用户存在

else                                

   echo "$USER not exist."      如果用户不存在就显示用户不存在

fi


写一个脚本

给定一个文件

如果是一个普通文件,就显示之;

如果是一个目录,亦显示之

否则就显示无法识别

#!/bin/bash

#

FILE=/etc/rc.d/rc.sysinit

if [ ! -e $FILE ] ;then     首先判断这个文件是否存在

  echo "no such file."     如果不存在就退出脚本

   exit 5

fi

if [ -f $FILE ] ;then       判断这个文件是否为普通文件

  echo "command file."

elif [ -d $FILE ];then       判断这个文件是否为目录

  echo "directory."

else

  echo "unknow"

fi  



练习:写一个脚本

给脚本传递两个参数(整数)

显示两者之和,之积

#!/bin/bash

#

if [ $# -lt 2];then     判断参数个数不能小于2

   echo "Usage:./ddzhu.sh ARG1 ARG2"  提示脚本的格式

  exit 7                如果条件不满足退出

fi

  echo "The sum is:$[$1+$2]"

  echo "The prod is:$[$1*$2]"


在shell脚本的学习中一定要多些脚本,多看脚本。只有这样不断的联系,才是学好shell的最好方法。