SHELL脚本编程---判断

1、条件判断

     条件判断在bash分为整数判断,字符判断和文件判断。

1-1条件判断的表达式: ① [ expression ] (注意单词词头和词尾都需要空格)

                    ② ` expression `(注意同上)

                     ③ test expression

    1-2 整数测试

      ① -eq  测试两个数是否相等,相等为真,不等为假

      ② -ne  测试两个数是否不等, 反之。

      ③ -gt (大于),-lt (小于),-ge(大于或等于),-le(小于或等于)

    1-3 文件类的测试

      ① -e (exist) FILE  测试该文件是否存在

      ② -f  FILE  测试该文件是否为普通文件

      ③ -d  FILE  测试该文件是否为目录文件

      ④ -r  FILE  测试该文件对执行当前脚本文件的用户来说是否有读权限

      ⑤ -w  FILE  测试该文件对执行当前脚本文件的用户来说是否有写权限

      ⑥ -x  FILE  测试该文件对执行当前脚本文件的用户来说是否有执行权限

2、条件判断,控制结构

                if  判断条件;then

                   statement1

                   statement2

                   statement3

                ………

                fi   单分支if语句。

                双分支的if语句

                if 判断条件;then

                  statement1

                else

                  statement2

                fi

                命令执行状态返回值:0为真,其他数值全为假

==================以下全部都为练习例题===============

逻辑判断题1

1、如果用户不存在,则添加用户

id USERNAME &> /dev/null || useradd USERNAME

逻辑判断题2、

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

id newuser && echo “newuser exists” || useradd newuser

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

id newuser &> /dev/null && echo “newuser exist” || useradd newuser

如果用户不存在,添加还给密码,否则,显示用户已经存在

id newuser2 && echo “newuser2 exists” || useradd newuser2 && echo “newuser2” | passwd --stdin newuser2

添加三个用户,user1-user3。需要提前判断用户是否存在,并显示添加了几个用户。最后显示当前系统上用户的数量

#!/bin/bash
read -p "Plz input your username :" User
id $User &> /dev/null
RETVAL=$?
if [ $RETVAL -eq 0 ];then
    for i in {1..3};do
        useradd $User$i && echo "$User$i" | passwd --  stdin $User$i &> /dev/null
    done
 
else
    echo "$User exists"
fi

 

 练习题二:

写一个脚本,使用一个变量保存用户名,判断其是否存在先,而且如果其UID为0,就说它是管理员,如果不为0就说它们是普通用户。

p_w_picpath

写一个简单脚本,完成如下的任务、

使用一个变量保存用户名,删除变量中的用户,以及它的家目录,显示“删除成功”信息。

p_w_picpath

练习题三:

判断当前系统上是否有用户默认的shell为bash,如果有,就显示有多少个这样的用户,否则,就显示没有。

p_w_picpath

========(注意:这里面有个叫RETVAL=$? 这个写在那个命令语句后面,执行的就是哪个后面的命令执行状态返回结果。)=========

练习题四:

判断当前系统上是否有用户默认的shell为bash,如果有,就显示其中的一个用户名,否则,就显示没有。

p_w_picpath

练习四:写脚本,给定一个文件,如/etc/inittab,判断文件中是否有空白的行,如果有,显示空白行数,否则,显示没有空白行。

p_w_picpath 

练习四改进:写脚本,让用户随便输入一个文件,判断该文件是否有效,如果有效,则显示其空白的行,否则,显示没有空白行。

p_w_picpath

练习五:随便给一个用户,判断它的UID和GID是否一致,如果一致,显示用户为”good guy“

否则,显示为bad guy

p_w_picpath

练习六:判定命令历史中历史命令的总条目是否大于等于1000,如果大于等于1000,则显示“need clean up”,否则显示“ok!”

p_w_picpath或者是p_w_picpath