05_03_bash脚本编程之二 条件判断  、05_04_bash脚本编程之三 条件判断及算术运算

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_bash脚本编程之三 条件判断及算术运算)