test命令的用法

條件測試命令:
test命令 == [ 命令,bash的內置命令;
格式:
     test [表達式]
     [ expression ]

     [[:bash的關鍵字;通常僅用於某些特定結構或格式之中;
     [[ expression ]]

    注意:此類條件測試命令通常沒有執行結構,僅有執行狀態返回值;若是其執行狀態返回值爲0,則表示true;若是其執行狀態返回值爲1,則表示爲false;

    條件測試命令共有三類條件測試表達式:

    1.數值測試 :雙目操做:
        測試操做符:
            -eq:測試兩個數值是否相等;相等爲真,不等爲假;
            -ne:測試兩個數值是否不等;不等爲真,相等爲假;
            -lt:小於,測試左邊數值是否小於右邊的數值;小於爲真,不小於爲假;
            -gt:大於,測試左邊數值是否大於右邊的數值;大於爲真,不大於爲假;
            -le:小於等於,測試左邊數值是否小於等於右邊的數值;小於等於爲真,大於爲假;
            -ge:大於等於,測試左邊數值是否大於等於右邊的數值;大於等於爲真,小於爲假;

        注意:bash僅支持證書,不支持浮點數;
                    2.字符串測試:
        雙目測試:
            ==|=:測試兩個字符串是否爲相同的字符串;相同爲真,不一樣爲假;
            !=:測試兩個字符串是否爲不一樣的字符串;不一樣爲真,相同爲假;
            >:測試左邊的字符串所對應的ASCII編碼是否比右邊的字符串對應的ASCII編碼大;大於爲真,小於爲假;
            <:測試左邊的字符串所對應的ASCII編碼是否比右邊的字符串對應的ASCII編碼小;小於爲真,大於爲假;
            STRING =~ PATTERN:測試左側的字符串可否被右邊的PATTERN匹配;能匹配爲真,不能匹配爲假;

            注意:>,<,=~這三類測試操做符是隻能用在[[ expression ]]測試語句中
                              單目測試:
            -z 'STRING':測試STRING是否爲空串;空串爲真,不空爲假;
            -n 'STRING':測試STRING是否爲非空串,不空爲真,空串爲假;

        注意:
            1)一般狀況下,字符串是要用引號引用的,單引號或雙引號均可以,只有在特定的狀況下,只能選擇單引號或雙引號之一;
            2)[]和[[]]在某些狀況下,意義不徹底相同,要區分對待;
            3)若是使用[]或[[]]進行條件判斷,在表達式兩端都有留有空白字符,以區分命令和參數之間的關係;
            4)全部的雙目測試操做符和參數之間也要留有空白字符空間;

    文件測試:
        單目測試:
            -a|-e FILE:測試文件是否存在,存在爲真,不存在爲假;
            -b FILE:測試文件是否存在且爲塊設備文件,存在且爲塊設備爲真,不然爲假;
            -c FILE:測試文件是否存在且爲字符設備文件,存在且爲字符設備爲真,不然爲假;
            -d FILE:測試文件是否存在且爲目錄文件,存在且爲目錄文件爲真,不然爲假;
            -f FILE:測試文件是否存在且爲普通文件,存在且爲普通文件爲真,不然爲假;
            -h|-l FILE:測試文件是否存在且爲符號連接文件,存在且爲符號連接文件爲真,不然爲假;
            -s FILE:測試文件是否存在且其大小大於0,存在且其大小大於0爲真,不然爲假;
            -S FILE:測試文件是否存在且爲套接字文件,存在且其爲套接字文件爲真,不然爲假;
            -t FD:測試文件描述符是否在終端上被打開,被打開爲真,不然爲假;

            文件的訪問權限測試:
            -r FILE:測試文件是否存在且當前用戶是否被授予讀取權限,存在且受權爲真,不然爲假;
            -w FILE:測試文件是否存在且當前用戶是否被授予寫權限,存在且受權爲真,不然爲假;
            -x FILE:測試文件是否存在且當前用戶是否被授予執行權限,存在且受權爲真,不然爲假;

            文件特殊權限標識測試:
            -u FILE:測試文件是否存在且設置了SUID,存在且受權爲真,不然爲假;
            -g FILE:測試文件是否存在且設置了SGID,存在且受權爲真,不然爲假;
            -k FILE:測試文件是否存在且設置了STICKY,存在且受權爲真,不然爲假;

            文件的全部權測試:
            -O FILE:測試文件是否存在且其屬主爲當前有效用戶;存在且屬主爲當前有效用戶爲真,不然爲假;
            -G FILE:測試文件是否存在且其屬組爲當前有效用戶的所在組;存在且屬組爲當前有效用戶的所在組爲真,不然爲假;

        雙目測試:
            FILE1 -ef FILE2:測試兩個文件是否擁有相同的Ionde編號;即:兩個文件是否爲硬連接;(之後再細說)

    測試語句中添加邏輯運算符號:
        1.利用bash的邏輯運算符號
        [ expression1 ] && [ expression2 ] 與
        [ expression1 ] || [ expression2 ] 或
        ![ expression1 ]  非
        2.利用條件測試命令自己的邏輯運算符號:
            [ expression1 -a expression2 ] 與運算
            [ expression1 -o expression2 ] 或運算
            [ !expression1 ] 取反

    命令的執行結果:
        1.命令的正常輸出結果;
        2.命令的執行狀態返回值;
            0-255
            0:表示命令成功執行或者條件判斷爲真;
            1-255:表示命令執行失敗或者條件判斷爲假;
                1,2,127:系統默認保留;
                3-126,128-255:用戶自定義的命令執行狀態返回值;

        exit命令:
            exit - exit the shell
            格式:
                exit [n]
                退出shell時可使用n做爲狀態返回值;若是沒有指定n,則默認的狀態返回值爲最後一條命令的狀態返回值;

            注意:當shell腳本運行時,一旦遇到exit命令,將當即結束運行此腳本的shell進程,同時此腳本的運行也會中止其後續的全部命令都不會再被解釋執行;所以,包含了exit命令的腳本,不要是用source命令來執行;
相關文章
相關標籤/搜索