zoukankan      html  css  js  c++  java
  • shell编程(三)之条件判断(if语句)

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

    #!/bin/bash
    #
    grep '<bash$' /etc/passwd &> /dev/null
    RETVAL=$?
    if [ $RETVAL -eq 0 ]; then
    USERS=`grep "<bash$" /etc/passwd | wc -l`
    echo "hava $USERS users use default bash"
    else
        echo "没有默认使用bash的用户"
    fi

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

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

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

    #!/bin/bash
    grep "^$" /etc/inittab &> /dev/null
    RETVAL=$?
    if [ $RETVAT -eq 0 ]; then
        echo "没有空白行"
    else
        NUM=`grep "^$" /etc/inittab | wc -l`
        echo "有$NUM空白行"
    fi

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

    #!/bin/bash
    #
    USERNAME="user1"
    USERID=`id -u $USERNAME`
    GROUPID=`id -g $USERNAME`
    if [ USERID -eq GROUPID ]; then
    echo "good guy"
    else
    echo "bad guy"
    fi
    #!/bin/bash
    #
    USERNAME=user1
    USERID=`grep "^$USERNAME>" /etc/passwd | cut -d: -f3`
    GROUPID=`grep "^$USERNAME>" /etc/passwd | cut -d: -f4`
    if [ USERID -eq GROUPID ]; then
    echo "good guy"
    else 
    echo "bad guy"
    fi

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

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

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

    #!/bin/bash
    USER
    =root
    id -u $USER &> /dev/null
    RETVAL=$?
    if [ $RETVAL -eq 0 ]; then WARNDATE
    =`grep "^$USER>" /etc/shadow | cut -d: -f6` LATESTDATE=`grep "^$USER>" /etc/shadow | cut -d: -f3` MAXDATE=`grep "^$USER>" /etc/shadow | cut -d: -f5` MILLS=`date +%s` NOWDATEUSED=`expr $MILLS / 86400` SY=$[$MAXDATE - $[$NOWDATEUSED - LATESTDATE]] if [ $SY -gt $WARNDATE ];then echo "OK" else echo "Warning" fi
    else
    exit
    fi
    #!/bin/bash
    USER=root
    if ! grep "^$USER>" /etc/shadow; then
        exit 1
    fi
    WARNDATE=`grep "^$USER>" /etc/shadow | cut -d: -f6`
    LATESTDATE=`grep "^$USER>" /etc/shadow | cut -d: -f3`
    MAXDATE=`grep "^$USER>" /etc/shadow | cut -d: -f5`
    MILLS=`date +%s`
    NOWDATEUSED=`expr $MILLS / 86400`
    SY=$[$MAXDATE  - $[$NOWDATEUSED - LATESTDATE]]
    if [ $SY -gt $WARNDATE ];then
        echo "OK"
    else
        echo "Warning"
    fi

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

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

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

    复制代码
    #!/bin/bash
    #
    FILE=/etc/rc.d/sysinit
    
    if [ ! -e $FILE ]; then
        echo 'no such file'
        exit 6
    elif [ -d $FILE ]; then 
        echo 'this is a directory'
    elif [ -f $FILE ]; then
        echo 'this is a common file'
    else
        echo 'unknow file'
    fi
    复制代码

    练习:写一个脚本

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

    复制代码
    #!/bin/bash
    #if [ $# -eq 0 ]; then
        echo '没有传递参数'
    elif [ $# -lt 2 ]; then
        echo '需要两个参数'
    else
        SUM1=$[$1+$@]
        SUM2=$[$1*$2]echo "和为$SUM1,积为$SUM2"
    fi

    写一个脚本:

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

    复制代码
    #!/bin/bash
    #
    for I in {1..10}; do
        if ! id user$I &>/dev/null; then 
            useradd user$I
            echo "user$I" | passwd --stdin user$I
        else
            echo "user$I exists"
        
        fi
    done
    复制代码

    删除上述十个用户

    复制代码
    #!/bin/bash
    #
    for I in {1..10}; do
        if id user$I &> /dev/null; then
            userdel -r user$I &> /dev/null
            echo "user$I deleted"
        else
            echo "user$I not exists"
        fi
    done
    复制代码

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

    复制代码
     #!/bin/bash
      2 #
      3 if [ $# -lt 1 ]; then
      4     echo "Usage: No ARGs"
      5 fi
      6 if [ $1 == "--add" ]; then
      7 for I in `echo $2 | sed 's/,/ /g'`; do
      8     if id $I &> /dev/null; then
      9        echo "$I exists"
     10     else
     11         useradd $I
     12         echo $I | passwd --stdin $I &> /dev/null
     13         echo "Add $I finished"
     14     fi
     15 done
     16 elif [ $1 == "--del" ]; then
     17 for I in `echo $2 | sed 's/,/ /g'`; do
     18     if ! id $I &> /dev/null; then
     19         echo "$I not exists"
     20     else
     21         userdel -r $I
     22         echo "Delete $I finished"
     23     fi
    复制代码
  • 相关阅读:
    【SpringCloud】工程分类概况
    【Spring Alibaba】Sentinel/Nacos/RocketMQ/Seata/
    【Eureka】服务架构类知识点
    求车速
    尼科彻斯定理
    Tom数
    弟弟的作业
    汽水瓶
    POJ-2533-Longest Ordered Subsequence(LIS模板)
    HDU-1331-Function Run Fun(动态规划3)
  • 原文地址:https://www.cnblogs.com/ckh2014/p/7168250.html
Copyright © 2011-2022 走看看