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

  1. #!/bin/bash
  2. #
  3. grep '\<bash$' /etc/passwd &> /dev/null
  4. RETVAL=$?
  5. if [ $RETVAL -eq ]; then
  6. USERS=`grep "\<bash$" /etc/passwd | wc -l`
  7. echo "hava $USERS users use default bash"
  8. else
  9. echo "没有默认使用bash的用户"
    fi

练习:写一个脚本
判断当前系统上是否有用户的默认shell为bash;
如果有,就显示其中一个的用户名;否则,就显示没有这类用户;

  1. #!/bin/bash
  2. #
  3. grep '\<bash$' /etc/passwd &> /dev/null
  4. RETVAL=$?
  5. if [ $RETVAL -eq ]; then
  6. USER=`grep "\<bash$" /etc/passwd | head - | cut -d: -f1`
  7. echo "user $USER use default bash"
  8. else
  9. echo "没有默认使用bash的用户"
  10. fi

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

  1. #!/bin/bash
  2. grep "^$" /etc/inittab &> /dev/null
  3. RETVAL=$?
  4. if [ $RETVAT -eq ]; then
  5. echo "没有空白行"
  6. else
  7. NUM=`grep "^$" /etc/inittab | wc -l`
  8. echo "有$NUM空白行"
    fi

练习:写一个脚本
给定一个用户,判断其UID与GID是否一样
如果一样,就显示此用户为“good guy”;否则,就显示此用户为“bad guy”。

  1. #!/bin/bash
  2. #
  3. USERNAME="user1"
  4. USERID=`id -u $USERNAME`
  5. GROUPID=`id -g $USERNAME`
  6. if [ USERID -eq GROUPID ]; then
  7. echo "good guy"
  8. else
  9. echo "bad guy"
  10. fi
  1. #!/bin/bash
  2. #
  3. USERNAME=user1
  4. USERID=`grep "^$USERNAME\>" /etc/passwd | cut -d: -f3`
  5. GROUPID=`grep "^$USERNAME\>" /etc/passwd | cut -d: -f4`
  6. if [ USERID -eq GROUPID ]; then
  7. echo "good guy"
  8. else
  9. echo "bad guy"
  10. fi

练习:写一个脚本
给定一个用户,获取其密码警告期限;
而后判断用户密码使用期限是否已经小于警告期限;
提示:计算方法,最长使用期限减去已经使用的天数即为剩余使用期限;

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

expr : 圆整:丢弃小数点后的所有内容#!/bin/bash#

  1. #!/bin/bash
    USER=root
    id -u $USER &> /dev/null
    RETVAL=$?
    if [ $RETVAL -eq 0 ]; then
  2. WARNDATE=`grep "^$USER\>" /etc/shadow | cut -d: -f6`
  3. LATESTDATE=`grep "^$USER\>" /etc/shadow | cut -d: -f3`
  4. MAXDATE=`grep "^$USER\>" /etc/shadow | cut -d: -f5`
  5. MILLS=`date +%s`
  6. NOWDATEUSED=`expr $MILLS / `
  7. SY=$[$MAXDATE - $[$NOWDATEUSED - LATESTDATE]]
  8. if [ $SY -gt $WARNDATE ];then
  9. echo "OK"
  10. else
  11. echo "Warning"
  12. fi
    else
    exit
    fi
  1. #!/bin/bash
  2. USER=root
  3. if ! grep "^$USER\>" /etc/shadow; then
  4. exit
  5. fi
  6. WARNDATE=`grep "^$USER\>" /etc/shadow | cut -d: -f6`
  7. LATESTDATE=`grep "^$USER\>" /etc/shadow | cut -d: -f3`
  8. MAXDATE=`grep "^$USER\>" /etc/shadow | cut -d: -f5`
  9. MILLS=`date +%s`
  10. NOWDATEUSED=`expr $MILLS / `
  11. SY=$[$MAXDATE - $[$NOWDATEUSED - LATESTDATE]]
  12. if [ $SY -gt $WARNDATE ];then
  13. echo "OK"
  14. else
  15. echo "Warning"
  16. fi

练习:写一个脚本
判定命令历史中历史命令的总条目是否大于1000;如果大于,则显示“Some command will gone.”;否则显示“OK”。

  1. #!/bin/bash
  2. SUM=`history | tail -1 | cut -d' ' -f3`
  3. if [ $SUM -lt 50 ]; then
  4. echo 'Some command will gone'
  5. else
  6. echo 'ok'
  7. fi 

练习:写一个脚本
给定一个文件:
如果是一个普通文件,就显示之;
如果是一个目录,亦显示之;
否则,此为无法识别之文件;

  1. #!/bin/bash
  2. #
  3. FILE=/etc/rc.d/sysinit
  4.  
  5. if [ ! -e $FILE ]; then
  6. echo 'no such file'
  7. exit 6
  8. elif [ -d $FILE ]; then
  9. echo 'this is a directory'
  10. elif [ -f $FILE ]; then
  11. echo 'this is a common file'
  12. else
  13. echo 'unknow file'
  14. fi

练习:写一个脚本

给脚本传递两个参数(整数);
显示此两者之和,之乘积;

  1. #!/bin/bash
  2. #if [ $# -eq 0 ]; then
  3. echo '没有传递参数'
  4. elif [ $# -lt 2 ]; then
  5. echo '需要两个参数'
  6. else
  7. SUM1=$[$1+$@]
  8. SUM2=$[$1*$2]echo "和为$SUM1,积为$SUM2"
  9. fi

写一个脚本:

1.添加10个用户user1到user10, 密码同用户名;但要求只有用户不存在的情况才能添加;

  1. #!/bin/bash
  2. #
  3. for I in {1..10}; do
  4. if ! id user$I &>/dev/null; then
  5. useradd user$I
  6. echo "user$I" | passwd --stdin user$I
  7. else
  8. echo "user$I exists"
  9.  
  10. fi
  11. done

删除上述十个用户

  1. #!/bin/bash
  2. #
  3. for I in {1..10}; do
  4. if id user$I &> /dev/null; then
  5. userdel -r user$I &> /dev/null
  6. echo "user$I deleted"
  7. else
  8. echo "user$I not exists"
  9. fi
  10. done

扩展: 根据输入参数进行添加或删除指定几个用户,

  1. #!/bin/bash
  2. 2 #
  3. 3 if [ $# -lt 1 ]; then
  4. 4 echo "Usage: No ARGs"
  5. 5 fi
  6. 6 if [ $1 == "--add" ]; then
  7. 7 for I in `echo $2 | sed 's/,/ /g'`; do
  8. 8 if id $I &> /dev/null; then
  9. 9 echo "$I exists"
  10. 10 else
  11. 11 useradd $I
  12. 12 echo $I | passwd --stdin $I &> /dev/null
  13. 13 echo "Add $I finished"
  14. 14 fi
  15. 15 done
  16. 16 elif [ $1 == "--del" ]; then
  17. 17 for I in `echo $2 | sed 's/,/ /g'`; do
  18. 18 if ! id $I &> /dev/null; then
  19. 19 echo "$I not exists"
  20. 20 else
  21. 21 userdel -r $I
  22. 22 echo "Delete $I finished"
  23. 23 fi

shell编程(三)之条件判断(if语句)的更多相关文章

  1. shell编程基础(3)条件判断语句

    1,带参数的shellscript #this is program build 5.11 to test shell script ############ cxz ####### 5.11 ### ...

  2. Shell编程中的条件判断(条件测试)

    Shell中的条件判断(测试)类型: 1) 整数测试 2) 字符测试 3) 文件测试 条件测试的表达式:        (注: expression 与 [] 之间空格不能省略) [ expressi ...

  3. Linux编程 23 shell编程(结构化条件判断 命令if -then , if-then ... elif-then ...else,if test)

    一.概述 在上一篇里讲到了shell脚本,shell按照命令在脚本中出现的顺序依次进行处理,对于顺序操作已经足够了,但许多程序要求对shell脚本中的命令加入一些逻辑流程控制,这样的命令通常叫做 结构 ...

  4. SHELL学习笔记----IF条件判断,判断条件

    SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外.  if list then           do something here   ...

  5. Mariadb MySQL逻辑条件判断相关语句、函数使用举例介绍

    MySQL逻辑条件判断相关语句.函数使用举例介绍 By:授客 QQ:1033553122 1.  IFNULL函数介绍 IFNULL(expr1, expr2) 说明:假如expr1 不为NULL,则 ...

  6. linux Shell中常用的条件判断

    linux Shell中常用的条件判断 -b file            若文件存在且是一个块特殊文件,则为真 -c file            若文件存在且是一个字符特殊文件,则为真 -d ...

  7. shell编程学习笔记(八):Shell中的if条件判断

    编程语言中都有条件判断,shell编程也不例外,下面我们来看一下shell中应该怎么使用if条件判断 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/scripts ...

  8. Shell脚本 (三) 条件判断 与 流程控制

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 六.条件判断 1.基本语法 [ condition ](注意condition 前后要有空格) 注意:条 ...

  9. shell编程学习笔记(九):Shell中的case条件判断

    除了可以使用if条件判断,还可以使用case 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/scripts # vim script08.sh 开始编写scrip ...

随机推荐

  1. jQuery常用的取值或赋值的方法

    $(selector).data(name) 从被取元素返回附加的数据 存在一个div标签:<div data-meeting="hi Tom"></div> ...

  2. nat123学习笔记

    1.NAT123内网映射端口 在无内网路由管理员权限的情况下,需要将内网web应用暴露到公网访问,此时需要用到花生壳或者nat123(两个应用都不是免费的,其中花生壳可以8元认证,以后免费使用,nat ...

  3. java 3大特性

    1. 封装 : 定义: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口. 作用: 封装通过对属性增加修饰符来控制数据的访问权限,定义数据的访问接口,增加了数据的隐秘性和安全性. 2.继承 ...

  4. 20155228 实验五 Android开发基础

    20155228 实验五 Android开发基础 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验要求 1.没有Linux基础的同学建议先学习< ...

  5. Python 连接SQL Server数据库 - pymssql使用基础

    1.  官方api http://www.pymssql.org/en/stable/ref/pymssql.html 我学习自这里

  6. 设计模式之Prototype(原型)(转)

    定义: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传 ...

  7. ClassThree__HomeWork

    作业一 使用类的静态字段和构造函数,可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”. 代码 public class TestOne {       ...

  8. 环绕声5.1ch

    简单说5.1ch就是数字影院中的音频输出术语,环绕立体声输出,让人有置身电影院的感觉,由五个音箱(两个主音箱.两个环绕箱.一个中置箱)+一个低音炮组成 5.1环绕声包括了5个全频带声道和 1个低频效果 ...

  9. qt creator翻译流程

    一,下载qt creator软件包,最好是5.3,       本人是Win7,64位电脑,下载的是qt-opensource-windows-x86-mingw482_opengl-5.3.0.ex ...

  10. Django 自定义

    from django.db import models class MyCharfield(models.Field): def __init__(self,max_length,*args,**k ...