shell-if語句學習
bash中如何實現條件判斷? 條件測試型別: 整數測試 字元測試 檔案測試
一、條件測試的表示式: [ expression ] 括號兩端必須要有空格 [[ expression ]] 括號兩端必須要有空格 test expression 組合測試條件:
-a: and
-o: or
!: 非
二、整數比較:
-eq 測試兩個整數是否相等
-ne 測試兩個整數是否不等
-gt 測試一個數是否大於另一個數
-lt 測試一個數是否小於另一個數
-ge 大於或等於
-le 小於或等於
命令間的邏輯關係
邏輯與:&& 第一個條件為假 第二個條件不用在判斷,最總結果已經有 第一個條件為真,第二個條件必須得判斷 邏輯或:||
三、字串比較
== 等於 兩邊要有空格
!= 不等
> 大於
< 小於
四、檔案測試
-z string 測試指定字元是否為空,空著真,非空為假
-n string 測試指定字串是否為不空,空為假 非空為真
-e FILE 測試檔案是否存在
-f file 測試檔案是否為普通檔案
-d file 測試指定路徑是否為目錄
-r file 測試檔案對當前使用者是否可讀
-w file 測試檔案對當前使用者是否可寫
-x file 測試檔案對當前使用者是都可執行
-z 是否為空 為空則為真
-a 是否不空
五、if語法
if 判斷條件 0為真 其他都為假
.單分支if語句
if 判斷條件;then statement1 statement2 ……. fi
.雙分支的if語句:
複製程式碼
if 判斷條件;then statement1 statement2 ….. else statement3 statement4 fi
複製程式碼
Note: if語句進行判斷是否為空 [ “$name” = “” ] 等同於
[ ! “$name” ] [ -z “$name” ]
Note: 使用if語句的時候進行判斷如果是進行數值類的判斷,建議使用let(())進行判斷,對於字串等使用test[ ] or [[ ]] 進行判斷 (())中變數是可以不使用$來引用的
example:表述數字範圍的時候 可以使用if可以是使用case
if [ $x -gt 90 -o $x -lt 100 ] case $x in 100) 9[0-9])
這個語句的意思是如果$name為空,那麼X=X成立折執行下面的結果;
if [ “X$name” != “x” ]
寫指令碼的時候很多時候需要用到回傳命令,$?如果上一個命令執行成功,回傳值為0,否則為1~255之間的任何一個
0為真
非0為假
條件測試的寫法:
1、執行一個命令的結果 if grep -q “rm” fs.sh;then
2、傳回一個命令執行結果的相反值 if !grep -q “rm” fs.sh;then
3、使用複合命令((算式)) if ((a>b));then
4、使用bash關鍵字 [[判斷式]] if [[ str > xyz ]];then
5、使用內建命令:test 判斷式 if test “str” > “xyz”;then
6、使用內建命令:[判斷式] 類似test if [ “str” > “xyz” ];then
7、使用-a -o進行邏輯組合 [ -r filename -a -x filename ]
8、命令&&命令 if grep -q “rm” fn.sh && [ $a -lt 100 ];then
9、命令||命令 if grep -q “rm” fn.sh || [ $a -lt 100 ];then