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
.....