一居夹、語法結(jié)構(gòu)
if [ condition ]
then
statements
[elif condition
then statements. ..]
[else
statements ]
fi
二、說明
(1)[ condition ] (注意condition前后要有空格)
非空返回true,可使用$?驗(yàn)證(0為true既穆,>1為false) 如:[ hadoop ] 返回true
空返回false 如:[ ] 返回false
(2)[ condition ] && echo OK ||echo notok 可以多條件,條件滿足雀鹃,執(zhí)行后面的語句
三幻工、整數(shù)比較
-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"))
小數(shù)據(jù)比較可使用AWK #下一篇單獨(dú)介紹awk數(shù)據(jù)處理
四、字符串比較
= 等于,如:if [ "$a" = "$b" ]
== 等于,如:if [ "$a" == "$b" ],與=等價(jià)
!= 不等于,如:if [ "$a" != "$b" ]
這個(gè)操作符將在[[]]結(jié)構(gòu)中使用模式匹配.
大于,在ASCII字母順序下.如:
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ]
注意:在[]結(jié)構(gòu)中">"需要被轉(zhuǎn)義.
-z 字符串為"null".就是長度為0.
-n 字符串不為"null"
五黎茎、權(quán)限判斷
-r 有讀的權(quán)限
-w 有寫的權(quán)限
-x 有執(zhí)行的權(quán)限
六囊颅、文件系統(tǒng)類型判斷
-f 文件存在并且是一個(gè)常規(guī)的文件
-s 文件存在且不為空
-d 文件存在并是一個(gè)目錄
-b 文件存在并且是一個(gè)塊設(shè)備
-L 文件存在并且是一個(gè)軟連接
實(shí)例1 特權(quán)用戶的高內(nèi)存占用查詢
#!/bin/bash
if [ root == `awk -F: '$3==0{print $1}' /etc/passwd ` ];then #>字符判斷
echo "Privileged user is root" #>判斷特權(quán)用戶是否只有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 #>這個(gè)$4的點(diǎn)自定義,這里虛擬機(jī)沒吃內(nèi)存厲害應(yīng)用
echo "---------------------end----------------"
exit 1
fi
案例2 遠(yuǎn)程登錄的用戶的詳情查詢
[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
.....