邏輯判斷表達式:if [ $a -gt $b ]; if [ $a -lt 5 ]; if [ $b -eq 10 ]等 -gt (>); -lt(<); -ge(>=); -le(<=);-eq(==); -ne(!=) 注意處處都是空格 then=知足條件 else=不知足條件shell
第一種格式:if 條件 ; then 語句 ; fibash
第二種格式:if 條件 ;then 語句 ;else 語句 ;fi a=1那麼久不知足條件,就是else。less
a=1 那麼 a 就不>3 因此就不知足條件,就是elsespa
第三種格式:if …; then … ;elif …; then …; else …; ficode
【 if file 】 判斷是不是普通文件,切存在ip
【-d file 】判斷是不是目錄,且存在input
【 -e file 】判斷文件或目錄是否存在it
【 -r file 】判斷文件是否可讀 可寫 可執行 = 相似table
判斷的不一樣寫法:【 -f $f 】|| touch $fclass
if [ ! -f $f] ! = 非,取反
then
touch $f
fi
if [ -z "$a" ] 這個表示當變量a的值爲空時會怎麼樣
if [ -n "$a" ] 表示當變量a的值不爲空
if grep -q '123' 1.txt; then 表示若是1.txt中含有'123'的行時會怎麼樣
if [ ! -e file ]; then 表示文件不存在時會怎麼樣
if (($a<1)); then …等同於 if [ $a -lt 1 ]; then…
[ ] 中不能使用<,>,==,!=,>=,<=這樣的符號
if [ -z 「$a」 ] 這個表示當變量a的值爲空時會怎麼樣 #!/bin/bash n='wc -l /tmp/lalala' if [ $n -lt 100 ] then echo "line num less than 100" fi # 若是/tmp/lalala文件爲空,或者被刪除的話,腳本就會運行出錯,出現bug 應該加上一個判斷條件 #!/bin/bash n='wc -l /tmp/lalala' if [ $n -z "$n" ] # [ $n -z "$n" ] = [ ! $n -n "$n" ],-z 和 -n 是一對相反的條件 then echo "error" exit elif [ $n -lt 100 ] then echo "line num less than 100" fi 或者 #!/bin/bash if [ ! -f /tmp/lalala ] then echo "/tmp/lalala is not exist" exit fi n='wc -l /tmp/lalala' if [ $n -lt 100 ] then echo "line num less than 100" fi
case 變量名 in value1) commond1 ;; value2) commod2 ;; value3) commod3 ;; esac
腳本案例:
在網卡系統服務腳本中,如,/etc/init.d/iptables中就用到了case
在case中,能夠在條件中使用「|」,表示或的意思
輸入一個同窗的分數,判斷成績是否及格,優秀。 #!/bin/bash read -p "Please input a number: " n # read -p 是讀取用戶的輸入數據,定義到變量裏面 if [ -z "$n" ] then echo "Please input a number." exit 1 #「exit 1」表示非正常運行致使退出程序 #退出以後,echo $?會返回1值,表示程序退出是由於出錯了,和查看上一條命令執行有無錯誤的時候是同樣的。 fi n1=`echo $n|sed 's/[0-9]//g'` #判斷用戶輸入的字符是否爲純數字 #若是是數字,則將其替換爲空,賦值給$n1 if [ -n "$n1" ] then echo "Please input a number." exit 1 #判斷$n1不爲空時(即$n不是純數字)再次提示用戶輸入數字並退出 fi #若是用戶輸入的是純數字則執行如下命令: if [ $n -lt 60 ] && [ $n -ge 0 ] then tag=1 elif [ $n -ge 60 ] && [ $n -lt 80 ] then tag=2 elif [ $n -ge 80 ] && [ $n -lt 90 ] then tag=3 elif [ $n -ge 90 ] && [ $n -le 100 ] then tag=4 else tag=0 fi #tag的做用是爲判斷條件設定標籤,方便後面引用 case $tag in 1) echo "not ok" ;; 2) echo "ok" ;; 3) echo "ook" ;; 4) echo "oook" ;; *) echo "The number range is 0-100." ;; esac