大家好,我是“孤雲幕雨”;今天給大家帶來的是《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 FD;fd表示文件描述符是否已經打開且與某終端相關
(五)文件時間戳測試
Ü -N FILENAME:文件自從上一次被讀取之後是否被修改過
(六)文件從屬關係測試
Ü -O FILENAME:當前有效用戶是否爲文件屬主
Ü -G FILENAME:當前有效用戶是否爲文件屬組
(七)雙目測試
Ü FILE1 -nt FILE2:判斷FILE1是否新於FILE2
Ü FILE1 -ot FILE2:判斷FILE1是否舊於FILE2
Ü FILE1 -ef FILE2:判斷FILE1和FILE2是否指向同一個文件系統的相同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 狀態碼範圍:1~255之間
v 如果未給腳本指定退出狀態碼,整個腳本的退出狀態碼取決於腳本中執行的最後一條命令的狀態碼
v 遇到exit,bash進程會立即終止