zoukankan      html  css  js  c++  java
  • shell脚本编程之条件判断

    条件测试类型:

    整数测试
    字符测试
    文件测试
    

    条件测试的表达式的三种方法:

    1、[ expression ]     命令测试
    2、[[ expression ]]   关键字测试
    3、test expression
    

    整数比较:

    -eq:测试两个整数是否相等;相等为真,不等为假
    -ne:测试两个整数是否不等;不等为真,相等为假
    -gt:测试一个数是否大于另一个数;大于为真,否则为假
    -lt:测试一个数是否小于另一个数;小于为真,否则为假
    -ge:大于或等于
    -le:小于或等于
    

    命令间的逻辑关系:

    !:表示非(取反)
    逻辑与:&&
    逻辑或:||
    
    CMD1 && CMD2
    Example:id aaa && echo "hello aaa"
    如果&&前的执行结果是假,总的结果就是假,没必要执行&&后的操作
    如果CMD1成功了(真),就可执行CMD2
    如果CMD1失败了(假),就不执行CMD2
    如果aaa用户存在,则打印hello aaa;如果用户aaa不存在,则不进行打印
    
    CMD1 || CMD2
    Example:id aaa || useradd aaa
    如果||前的执行结果是真,总的结果就是真,没必要执行||后的操作CMD2
    如果CMD1成功了(真),就不执行CMD2
    如果CMD1失败了(假),就可执行CMD2
    如果用户aaa存在,就不执行创建aaa用户的命令;如果aaa用户不存在,则创建该用户
    
    EXAMPLE:
    id aaa && echo user aaa exists || useradd aaa
    如果用户aaa存在,打印user aaa exists;如果用户不存在,则创建该用户;&&前如果为真,则整个逻辑与为真,再与后面的命令做逻辑或;
    !id aaa && useradd aaa || echo user aaa exists
    取反;如果用户不存在,则创建用户;如果用户存在,则打印user aaa exists;
    !id bbb &>/dev/null && useradd aaa && echo 123456 | passwd --stdin bbb &>/dev/null || echo "bbb exists"
    用户不存在则创建用户并且改密码;用户存在则打印bbb exists;
    USERID=`id -u bbb`;[ $USERID -eq 0 ] && echo "admin" || echo "common"
    如果bbb用户的uid等于0,打印admin;不等于0,打印common;
    

    条件判断,控制结构:

    单分支if语句

    if 判断条件;then                        
      statement1
      statement2
      ...
    fi
    
    Example1:
    #!/bin/bash
    NAME=aaa
    if id $NAME &>/dev/null;then            #id $NAME取的是命令的执行状态返回值;命令是否执行成功
       echo "$NAME exists"
    fi
    

    双分支if语句

    if 判断条件;then
      statement1
      statement2
      ...
    else
      statement3
      statement4
      ...
    fi
    
    Example2:
    #!/bin/bash
    NAME=aaa
    USERID=`id -u $NAME`           #`id -u $NAME`取的是命令的执行结果
    if [ $USERID -eq 0 ];then      #做等值判断需要加"[  ]"
       echo "$NAME is admin"       #可以不添加$USERID变量,写为 [ `id -u $NAME` -eq 0 ]
    else
       echo "$NAME is common"
    fi
    
    Example3:
    #!/bin/bash
    grep "bash$" /etc/passwd &>/dev/null
    if [ $? -eq 0 ];then                          
       AUSER=`grep "bash$" /etc/passwd | head -1 | cut -d: -f1`
       echo "The user is $AUSER"
    else
       echo no such user
    fi
    $?判断上一条命令执行是否成功,如果成功则状态返回值为0;当$?的状态返回值等于0时,那么限制一个用户,否则显示没有这样的用户
    
    Example4:
    #!/bin/bash
    USERNAME=user2
    USERID=`id -u $USERNAME`
    GROUPID=`id -g $USERNAME`
    if [ $USERID -eq $GROUPID ];then
       echo "good boy"
    else
       echo "bad boy"
    fi
    判断用的UID和GID是否相等,相等显示good boy;不相等显示bad boy
    

    shell中进行算数运算

    第一种方法:

    [root@localhost ~]# A=2
    [root@localhost ~]# B=3
    [root@localhost ~]# let C=$A+$B
    [root@localhost ~]# echo $C
    5
    

    第二种方法:

    [root@localhost ~]# A=6
    [root@localhost ~]# B=8
    [root@localhost ~]# C=$[$A+$B]
    [root@localhost ~]# echo $C
    14
    

    第三种方法:

    [root@localhost ~]# A=1
    [root@localhost ~]# B=2
    [root@localhost ~]# C=$(($A+$B))
    [root@localhost ~]# echo $C
    3
    

    第四种方法:

    [root@localhost ~]# A=3
    [root@localhost ~]# B=3
    [root@localhost ~]# C=`expr $A + $B`
    [root@localhost ~]# echo $C
    6
    
    Example:
    [root@localhost ~]# TIMESTAMP=`date +%s`
    [root@localhost ~]# let USEDATES=$TIMESTAMP/86400
    [root@localhost ~]# echo $USEDATES
    18234
    

    exit退出脚本

    Example:
    #!/bin/bash
    USERNAME=user10
    if ! grep "$USERNAME" /etc/passwd & >/dev/null;then            #if会自动判断后面命令的状态返回值;0为真,1——255皆为假
       echo "no such $USERNAME"
       exit 1
    fi
    没有user10用户,打印 no such user10,并且exit退出整个脚本,状态返回值定义为1
  • 相关阅读:
    spring MVC配置详解
    使用JDBC连接各种数据库
    Linux Shell常用shell命令
    IOS返回go(-1)
    NFS客户端挂载
    oracle常用函数
    支付宝手机网站支付流程(Node实现)
    SQL中的case when then else end用法
    mysql
    socket
  • 原文地址:https://www.cnblogs.com/dongzhanyi123/p/11985915.html
Copyright © 2011-2022 走看看