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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容