Linux條件測試


   大家好,我是“孤雲幕雨”;今天給大家帶來的是《Linux條件測試》

條件測試定義: 判斷某需求是否滿足,需要由“條件測試”機制來實現


如何編寫測試表達式以實現所需的測試

v  執行命令,並利用命令狀態返回值來判斷

Ü  0:成功

Ü  1-255:失敗

v  測試表達式

Ü  test 測試表達式

Ü  [ 測試表達式 ]

Ü  [[ 測試表達式 ]]

注意:中括號和測試表達式前後必須有空格,否則爲語法錯誤

 

bash測試類型

一、數值比較測試

Ü  INTEGER 1 –gt INTEGER 2:判斷整數1是否大於整數2;大於爲真,否則爲假

Ü  INTEGER 1 –ge INTEGER 2:判斷整數1是否大於等於整數2

Ü  INTEGER 1 –lt INTEGER 2:判斷整數1是否小於整數2;小於爲真,否則爲假

Ü  INTEGER 1 –le INTEGER 2:判斷整數1是否小於等於整數2

Ü  INTEGER 1 –eq INTEGER 2:判斷整數1是否等於整數2;等於爲真,不等爲假

Ü  INTEGER 1 –ne  INTEGER 2:判斷整數1是否不等於整數2;不等爲真,等於爲假

二、字符串測試

Ü  -z "STRING":判斷指定字符串是否爲空;空則爲真,不空則爲假

Ü  -n "STRING":判斷指定字符串是否不空;不空則爲真,空則爲假

Ü  STRING 1 == STRING 2:判斷字符串1是否和字符串2相等;相等爲真,否則爲假

Ü  STRING 1 !== STRING 2:判斷字符串1是否和字符串2不相等;不等爲真,否則爲假

Ü  STRING =~ PATTERN:左側的字符串是否能被右側的模式所匹配(包含匹配)能匹配到則爲真

Ü  STRING 1 > STRING 2:字符串是否大於

Ü  STRING 1 < STRING 2:字符串是否小於

注意:用於字符串比較時的用到的操作數都應該使用引號,且要在雙中括號[[  ]]中進行

三、文件測試

(一)文件存在性測試

v  單目測試

Ü  -e FILENAME:文件存在性測試,存在爲真,否則爲假

(二)文件類型測試

Ü  -f FILENAME:判斷該文件是否存在並且爲普通文件

Ü  -d FILENAME:判斷該文件是否存在並且爲目錄文件

Ü  -L FILENAME -h FILENAME:判斷該文件是否存在並且爲軟鏈接文件

Ü  -b FILENAME:判斷該文件是否存在並且爲塊設備文件

Ü  -c FILENAME:判斷該文件是否存在並且爲字符設備文件

Ü  -p FILENAME:判斷該文件是否存在並且爲命名管道文件

Ü  -S FILENAME:判斷該文件是否存在並且爲套接字文件

(三)文件內容測試

Ü  -s FILENAME:判斷該文件是否存在,是否爲非空文件

(四)文件打開測試

Ü  -t FDfd表示文件描述符是否已經打開且與某終端相關

(五)文件時間戳測試

Ü  -N FILENAME:文件自從上一次被讀取之後是否被修改過

(六)文件從屬關係測試

Ü  -O FILENAME:當前有效用戶是否爲文件屬主

Ü  -G FILENAME:當前有效用戶是否爲文件屬組

(七)雙目測試

Ü  FILE1 -nt FILE2:判斷FILE1是否新於FILE2

Ü  FILE1 -ot FILE2:判斷FILE1是否舊於FILE2

Ü  FILE1 -ef FILE2:判斷FILE1FILE2是否指向同一個文件系統的相同inode的硬鏈接

(八)文件權限測試

    普通權限測試

    Ü  -r FILENAME:判斷該文件是否存在,並且對當前用戶可讀

    Ü  -w FILENAME:判斷該文件是否存在,並且對當前用戶可寫

    Ü  -x FILENAME:判斷該文件是否存在,並且對當前用戶可執行

    特殊權限測試

    Ü  -u FILENAME:判斷該文件是否存在,並且擁有SUID權限

    Ü  -g FILENAME:判斷該文件是否存在,並且擁有SGID權限

    Ü  -k FILENAME:判斷該文件是否存在,並且擁有StickyBit權限

(九)多重(組合)條件測試

v  邏輯與:&&

Ü  COMMAND1 && COMMAND2

Ü  EXPRESSION1 -a EXPRESSION2

v  邏輯或:||

Ü  COMMAND1 || COMMAND2

Ü  EXPRESSION1 –o EXPRESSION2

v  邏輯非:!

Ü  ! COMMAND

Ü  ! EXPRESSION

邏輯運算

數字相同則爲0,數字不同則爲1

與運算

v  && =

v  && =

v  && =

v  && =

或運算

v  || =

v  || =

v  || =

v  || =

非運算

v  ! =

v  ! =

一行中可以執行多條語句,語句間用分號“;”分割;不管前面的語句是否正確執行,後面的語句都會執行

v  語句1 ; 語句2

 

bash自定義退出狀態碼

語法exit [N]

腳本中一旦遇到exit命令,腳本會立即終止;終止退出狀態取決於exit命令後面的數字

注意:shell進程遇到exit時,即會終止,因此,整個腳本執行即爲結束

v  狀態碼範圍:1255之間

v  如果未給腳本指定退出狀態碼,整個腳本的退出狀態碼取決於腳本中執行的最後一條命令的狀態碼

v  遇到exitbash進程會立即終止

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章