美文网首页
05_03_bash脚本编程之二 条件判断  、05_04_b

05_03_bash脚本编程之二 条件判断  、05_04_b

作者: 冰海之洋 | 来源:发表于2018-02-02 13:41 被阅读0次

    bash脚本编程之二、条件判断

    条件判断:

        如果用户不存在

            添加用户,给密码并显示添加成功;

        否则

            显示用户已存在,没有添加

    bash中如何实现条件判断?

        整数测试

    字符测试

        文件测试

    条件测试的表达式:

        [expression]

        [[expression]]

        test expression

    整数比较:

     -eq:测试两个整数是否相等;比如 $A -eq $B

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

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

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

        -ge:大于或等于

        -le:小于或等于

    命令间的逻辑关系:

     逻辑与:&&

     第一个条件为假时,第二个条件不会再判断,最终结果已经有;

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

     逻辑或:||

    如果用户user2不存在,就添加用户 user2

    !id user2 && useradd user2 

    id user2 || useradd user2

    变量名称:${VARNAME},括号有时可省略

        1、只能包含子母、数字和下划线,并且不能数字开头;

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

        3、最好做到见名知意;

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

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

    如果用户user1不存在,就添加;否则,显示其已经存在;

    ! id user1 && useradd user1 || echo “user1 exists.”

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

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

    条件判断,控制结构

    单分支if语句

    if 判断条件; then

      statement1

      statement2

      ...  

    fi

    双分支if语句:

    if 判断条件; then

      statement1

      statement2

    else

      statement3    

      statement4

      fi

    bash脚本编程之三 条件判断及算术运算

    练习一:写一个脚本

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

    #!/bin/bash

    #

    grep '\ /dev/null

    RETVAL=$?

    if [ $RETVAL -eq 0 ]; then

      USERS=` grep '\  echo "The shells of $USERS users is bash. "

    else

       echo "No such user."

    fi

    练习二:写一个脚本

    给定一个文件,比如/etc/inittab

    判断这个文件中是否有空白行;

    如果有,则显示其空白行数;否则,显示没有空白行。

    #!/bin/bash

    #

    grep '\ /dev/null

    RETVAL=$?

    if [ $RETVAL -eq 0 ]; then

      USERS=` grep '\  echo "The shells of $USERS users is bash. "

    else

       echo "No such user."

    fi

    练习四:写一个脚本

    给定一个用户,获取其密码警告期限;

    而后判断用户最近一次修改密码时间距是否已经小于警告期限;

     提示:算术运算的方法$[$A-$B]:表示变量A的值减去变量B的值的结果;

     如果小于,则显示”Warning“;否则,就显示”OK“.

     shell 中如何进行算术运算:

     A=3

     B=6

    1、let 算术运算表达式

        let C=$A+$B

    2、$[算术运算表达式]

        C=$[$A+$B]

    3、$((算术运算表达式))

        c=$(($A+$B))

    4、expr 算术运算表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用

        c=`expr $A + $B`

    #!/bin/bash

    W=`grep "wolf" /etc/shadow | cut -d: -f6`

    S=`date +%s`

    T=`expr $S/86400`

    L=`grep "wolf" /etc/shadow | cut -d: -f5`

    N=`grep "wolf" /etc/shadow | cut -d: -f3`

    SY=$[$L-$[$T-$N]]

    if [ $SY -lt $W ]; then

       echo "warning"

    else

       echo "OK"

    fi

     练习五:写一个脚本

     判定命令历史中历史命令的总条目是否大于1000;如果大于,则显示”Some command will gone.“;否则显示”OK“;

    #!/bin/bash

    #

    HI=`history | tail -1 | cut -d' ' -f2`

    S=[ $HI -gt 100 ]

    if [ $S -eq 0 ];  then

       echo "Some command will gone."

    else

       echo "OK."

    fi

    相关文章

      网友评论

          本文标题:05_03_bash脚本编程之二 条件判断  、05_04_b

          本文链接:https://www.haomeiwen.com/subject/qrmxzxtx.html