shell中IF的用法介绍

一、语法结构

if [ condition ]
then 
    statements 
[elif condition 
    then statements. ..] 
[else 
    statements ] 
fi

二、说明

(1)[ condition ] (注意condition前后要有空格)
非空返回true,可使用$?验证(0为true,>1为false) 如:[ hadoop ] 返回true
空返回false 如:[ ] 返回false
(2)[ condition ] && echo OK ||echo notok 可以多条件,条件满足,执行后面的语句

三、整数比较

   -eq 等于,如:if [ "$a" -eq "$b" ]
    -ne 不等于,如:if [ "$a" -ne "$b" ]
    -gt 大于,如:if [ "$a" -gt "$b" ]
    -ge 大于等于,如:if [ "$a" -ge "$b" ]
    -lt 小于,如:if [ "$a" -lt "$b" ]
    -le 小于等于,如:if [ "$a" -le "$b" ]
     大于(需要双括号),如:(("$a" > "$b"))
    >= 大于等于(需要双括号),如:(("$a" >= "$b"))
    小数据比较可使用AWK #下一篇单独介绍awk数据处理

四、字符串比较

   = 等于,如:if [ "$a" = "$b" ]
   == 等于,如:if [ "$a" == "$b" ],与=等价
   != 不等于,如:if [ "$a" != "$b" ]
   这个操作符将在[[]]结构中使用模式匹配.
   大于,在ASCII字母顺序下.如:
   if [[ "$a" > "$b" ]]
   if [ "$a" \> "$b" ]
     注意:在[]结构中">"需要被转义.
   -z 字符串为"null".就是长度为0.
   -n 字符串不为"null"

五、权限判断

-r  有读的权限
-w  有写的权限
-x  有执行的权限

六、文件系统类型判断

-f  文件存在并且是一个常规的文件
-s  文件存在且不为空
-d  文件存在并是一个目录
-b  文件存在并且是一个块设备
-L  文件存在并且是一个软连接

实例1 特权用户的高内存占用查询

#!/bin/bash
if [ root == `awk -F: '$3==0{print $1}' /etc/passwd ` ];then #>字符判断
        echo "Privileged user is root"  #>判断特权用户是否只有root
        echo "===================================/n======/n="
else
        echo "Privileged users are not root" 
        exit 1
fi

ps aux > 123.txt
if [ $? == 0 ] ;then
        echo "High memory occupancy analysis"
        echo "===================================/n======/n="
        awk '$4>="0.3"{print $1,$11}' 123.txt  #>这个$4的点自定义,这里虚拟机没吃内存厉害应用
        echo "---------------------end----------------"
        exit 1
fi

案例2 远程登录的用户的详情查询

[root@server 桌面]# cat 123.sh 
#!/bin/bash
lsof -i :ssh |grep -v sshd > 123.txt
if [ $? -eq 0 ];then
        echo "Display of users without remote login "
    cat 123.txt
        exit 1
else
        echo "Users without remote login"
fi

…..

    原文作者:小短腿电工
    原文地址: https://www.jianshu.com/p/b8f343161206
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞