一、if語句 單分支if語句 語法(中括弧首尾的空格不能省略): if [ 條件判斷式 ];then 程式 fi #或者 if [ 條件判斷式 ] then 程式 fi 示例: #!/bin/bash #根分區的使用率如果達到80則發出警告,向屏幕輸出一條提示信息。 rate=$(df -h | g ...
一、if語句
單分支if語句
語法(中括弧首尾的空格不能省略):
if [ 條件判斷式 ];then 程式 fi #或者 if [ 條件判斷式 ] then 程式 fi
示例:
#!/bin/bash #根分區的使用率如果達到80則發出警告,向屏幕輸出一條提示信息。 rate=$(df -h | grep /dev/sda5 | awk '{print $5}' | cut -d "%" -f 1) if [ $rate -ge 80 ] then echo "/dev/sda5 is full!!!" fi
雙分支if語句
語法:
if [ 條件判斷式 ] then 程式1 else 程式2 fi
示例1:對數據進行備份
#!/bin/bash #獲取當前系統時間,並以年月日的格式顯示 date=$(date +%y%m%d) #獲取目錄/etc的大小 size=$(du -sh /etc) #如果存在目錄 if [ -d /tmp/dbback ] then echo "Date is: $date" > tmp/dbback/db.txt echo "Size is: $size" >> /tmp/dbback/db.txt #在腳本中也是可以使用cd這樣的命令的 cd /tmp/dbback #打包壓縮文件進行備份,並且將命令執行後的信息丟棄 tar -zcf etc_$date.tar.gz /etc db.txt &>/dev/null rm -rf /tmp/dbback/db.txt else mkdir /tmp/dbback echo "Date is: $date" > tmp/dbback/db.txt echo "Size is: $size" >> /tmp/dbback/db.txt cd /tmp/dbback tar -zcf etc_$date.tar.gz /etc db.txt &>/dev/null rm -rf /tmp/dbback/db.txt fi
示例2:檢查某個服務是否正常運行
#!/bin/bash port=$(nmap -sT 192.168.1.159 | grep tcp | grep http | awk '{print $2}') #使用nmap命令掃描伺服器,並截取Apache服務的狀態 if [ "$port"=="open" ] then echo "$(date) httpd is ok!" >> /tmp/autostart-acc.log else #重啟Apache服務 /etc/rc.d/init.d/httpd start $>/dev/null echo "$(date) restart httpd!!" >> /tmp/autostart-err.log fi
多分支if語句
語法:
if [ 條件判斷式1 ] then 程式1 elif [ 條件判斷式2 ] then 程式2 ... else 程式n fi
示例:
#!/bin/bash # 從鍵盤輸入讀取值並賦予變數file read -p "Please input a filename: " file #判斷變數file是否為空 if [ -z "$file" ] then echo "Error, ase input a filename!" #退出並設置返回碼 exit 1 #判斷文件是否存在 elif [ ! -e "$file" ] then echo "Error, your input is not a file!" exit 2 #判斷file的值是否為普通文件 elif [ -f "$file" ] then echo "$file is a regulare file!" #判斷file的值是否為目錄文件 elif [ -d "$file" ] then echo "$file is a directory!" else echo "$file is an other file!" fi
二、case語句
語法:
case $變數名 in "值1") 程式1 ;; "值2") 程式2 ;; ... *) 程式n ;; esac
示例:
#!/bin/bash read -p "Please choose yes/no: " -t 30 cho case $cho in "yes") echo "Your choose is yes!" ;; "no") echo "Your choose is no!" ;; *) echo "Your choose is error!" ;; esac