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

簡書鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM