1. 程式人生 > >shell-if語句學習

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