Linux基础入门及系统管理01-bash脚本编程之二if等条件判断脚本知识17


一、bash中如何实现条件判断

   1、条件测试类型:

       a)整数测试:两值是否相等;

       b)字符测试:某个变量是否包含abc;

       c)文件测试:判断文件是否存在;

   2、条件测试的表达式:

       a)[ expression ]

       b)[[ expression ]]

       c)test expression

二、整数比较

   1、-eq:测试两个整数是否相等:相等,为真;不等,为假;

       如:# A=2

           # B=3

           # $A -eq $B

           # echo $?

           1

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

   3、-gt:测试一个数是否大于另一个数:大于,为真;否则,为假;

   4、-lt:测试一个数是否小于另一个数:小于,为真;否则,为假;

   5、-ge:大于或等于;

   6、-le:小于或等于;

三、bash命令间的逻辑关系

   1、逻辑与:&&;

       a)第一个条件为假时,第二个条件不用在判断,最终结果已经有;

       b)第一个条件为真时,第二个条件必须得判断;

   如1:id student &> /dev/null && echo "Hello,student."(默认student是存在的);

   如2:如果用户user6不存在,就添加用户user6(默认user6不存在):

       ! id user6 && useradd user6;

   2、逻辑或:||;

       a)第一个条件为假时,第二个条件必须得判断;

       b)第一个条件为真时,第二个条件不用在判断,最终结果已经有;

   如:如果用户user6不存在,就添加用户user6(默认user6不存在):

       id user6 || useradd user6,表示id user6为真,则不执行useradd user6。

       如果id user6为假,则执行useradd user6;

四、变量名称规则

   1、变量名称只能包含字母、数字和下划线,并且不能以数字开头;

   2、不应该跟系统中已有的环境变量重名;

   3、最好做到见名知义;

练习1:

   如果/etc/inittab文件的行数大于100,就显示好大的文件;

   命令显示:

   [ 'wc -l /etc/inittab | cut -d ' ' -f1' -gt 100 ] && echo "Large file."

   编写脚本:

   # nano bigfile.sh

   #!/bin/bash

   FILE=`wc -l /etc/inittab`

   BIGFILE='echo $FILE | cut -d' ' -f1'

   [ $BIGFILE -gt 100 ] && echo "/etc/inittab is large file." || echo "/etc/inittab is small file."

练习2:

   1、如果用户存在就显示用户已存在;否则,就添加此用户;

       id user1 && echo "user1 exists." || useradd user1

   2、如果用户不存在,就添加;否则,显示其用户存在;

       ! id user1 && useradd user1 || echo "user1 exists."

   3、如果用户不存在,添加并且给密码;否则,显示其已经存在;

       ! id user1 && useradd user1 && echo "user1" | passwd --stdin user1 || echo "user1 exists."

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

   1、添加3个用户user1,user2,user3;但要先判断用户是否存在,不存在而后在添加;

   2、添加完成后,显示一共添加了几个用户;当然,不能包含因为事先存在而没有添加的;

   3、最后显示当前系统上共有多少个用户;

# nano useradd.sh

   #!/bin/bash

! id user1 && useradd user1 && echo "user1" | passwd --       stdin user1 &> /dev/null || echo "user1 exists."

! id user2 && useradd user2 && echo "user2" | passwd --stdin user2 &> /dev/null || echo "user2 exists."

! id user3 && useradd user3 && echo "user3" | passwd --stdin user3 &> /dev/null || echo "user3 exists."

USERS=`wc -l /etc/passwd | cut -d: -f1`

echo "$USERS users."

# chmod +x ./useradd.sh

# ./useradd.sh

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

   给定一个用户:

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

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

# nano admin.sh

   #!/bin/bash

NAME=user1

USERID=`id -u $NAME`

[ $USERID -eq 0 ] && echo "Admin" || echo "Comond user."

#bash ./admin.sh

或者

   #!/bin/bash

NAME=user1

USERID=`id -u $NAME`

if [ $USERID -eq 0 ];then

echo "Admin"

else

echo "Comond user."

fi

五、条件判断,控制结构

   1、单分支if语句:

       if 判断条件;then

           statement1

           statement2

           ...

       fi

   2、双分支的if语句:

       if 判断条件;then

           statement1

           statement2

           ...

       else

           statement3

           statement4

           ...

       fi

   如:#/bin/bash

       #

       NAME=user1

       if id $NAME &> /dev/null;then

           echo "$NAME exists."

       else

           useradd $NAME

           echo $NAME | passwd --stdin $NAME

       fi

   3、多分支if语句:

       if 判断条件1;then

           statement1

           ...

       elif 判断条件2;then

           statement2

           ...

       elif 判断条件3;then

           statement3

           ...

       else

           statement4

           ...

       fi

   如:给定一个文件;如果是一个普通文件,就显示为文件;

       如果是一个目录,就显示为目录;

       否则,显示此文件无法识别;

       # nano filetest2.sh

           #!/bin/bash

           #

           FILENAME=/etc/rc.d/rc.init

           if [ ! -e $FILENAME ];then

           echo "Not such file."

           exit 5

           fi

           if [ -f $FILENAME ];then

           echo "The such is file."

           elif [ -d $FILENAME ];then

           echo "Directory."

           else

           echo "Unknow."

           fi

       # bash ./filetest.sh 。



你可能感兴趣的:(if,条件测试,逻辑关系,if分支,整数比较)