Shell編程之條件陳述句
目錄
- Shell編程之條件陳述句
- 一、條件測驗
- 1、test命令
- 2、檔案測驗
- 3、整數值比較
- 4、字串比較
- 5、邏輯測驗
- 二、if陳述句的結構
- 1、單分支結構
- 2、雙分支結構
- 3、多分支結構
- 4、單分支if陳述句
- 5、雙分支if陳述句
- 三、case陳述句結構
一、條件測驗
1、test命令
測驗運算式是否成立,若成立回傳0,否則回傳其他數值
格式1:test 條件運算式
格式2:[ 條件運算式 ]——————注意空格
2、檔案測驗
格式:[ 運算子 檔案或目錄 ]
常用的測驗運算子
- -d:測驗是否為目錄(Directory)
- -e:測驗目錄或檔案是否存在(Exist)
- -f:測驗是否為檔案(File)
- -r:測驗當前用戶是否有權限讀取(Read)
- -w:測驗當前用戶是否有權限寫入(Write)
- -x:測驗當前用戶是否有權限執行(eXcute)
例如:

3、整數值比較
[ 整數1 運算子 整數2 ]
常用的測驗運算子
-
-eq:等于(Equal)
-
-ne:不等于(Not Equal)
-
-gt:大于(Greater Than)
-
-lt:小于(Lesser Than)
-
-le:小于等于(Lesser or Equal)
-
-ge:大于等于(Greater or Equal)
例如1:

例如2:

補充下:bash不支持浮點運算,如果需要進行浮點運算,需要使用bc,awk處理
bc工具
加法:

減法:

乘法:

除法:

混合運算:

echo “scale=2; 變 量 名 / 變數名/ 變量名/變數名”|bc
這里scale是指小數點后的位數
ack工具
加法:

減法:

乘法:

除法:

混合運算:

4、字串比較
格式1:[ 字串1 = 字串2 ]或[ 字串1 == 字串2 ]
? [ 字串1 != 字串2 ]
格式2:[ -z 字串]
常用的測驗運算子
- =:字串內容相同
- !=:字串內容不同,!號表示相反的意思
- -z:字串內容為空,對于未定義或賦予空值的變數將是為空串
- -n:字串是否存在

5、邏輯測驗
格式1:[ 運算式1 ] 運算子 [ 運算式2 ] …————運算子&&或者||
格式2:[ 命令1 運算子 命令2 … ]————運算子-a或者-o
常用的測驗運算子
- -a或&&:邏輯與,而且的意思,前后條件都需要成立
- -o或者||:邏輯或,或者的意思,前后條件中只需成立一個
- !:邏輯否
注意:&&、||運算子能夠正常存在于[[]]條件判斷結構中,但是如果出現在[ ]結構中會報錯
例如

二、if陳述句的結構
1、單分支結構
格式:
if 條件測驗操作
? then 命令序列
fi
例1:
if [ 3 -gt 2 ]
then
? echo “ok”
fi


例2:
if [ 3 -gt 2 ]; then echo “ok”;fi

例3:
[ 3 -gt 2 ] && echo “ok”

2、雙分支結構
格式:
if 條件測驗操作
? then 命令序列1
? else 命令序列2
fi
3、多分支結構
格式:
if 條件測驗操作1
? then 命令序列1
elif 條件測驗操作2
? then 命令序列2
else
? 命令序列3
fi
4、單分支if陳述句
判斷掛載點目錄,若不存在則自動創建

5、雙分支if陳述句
判斷目標主機是否存活,顯示檢測結果

判斷分數范圍,分出優秀、合格、不合格三檔

三、case陳述句結構
case格式:
case 變數值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
*)
默認命令序列
esac
注意:
使用case分支陳述句時,有幾個值得注意的特點如下所述
case行尾必須為單詞in,每一模式必須以右括號“)”結束
雙分號“;;”表示命令序列的結束
模式字串中,可以用方括號表示一個連續的范圍,如“[ 0-9 ]”:還可以用豎杠符號“|”表示或,如“A|B”
最后的“*)”表示默認模式,其中的 * 相當于通配符
例如:
量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
*)
默認命令序列
esac
注意:
使用case分支陳述句時,有幾個值得注意的特點如下所述
case行尾必須為單詞in,每一模式必須以右括號“)”結束
雙分號“;;”表示命令序列的結束
模式字串中,可以用方括號表示一個連續的范圍,如“[ 0-9 ]”:還可以用豎杠符號“|”表示或,如“A|B”
最后的“*)”表示默認模式,其中的 * 相當于通配符
例如:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/237170.html
標籤:其他
上一篇:openssh升級到8.4版本
