條件測(cè)試:
?判斷某需求是否滿足肝箱,需要由測(cè)試機(jī)制來(lái)實(shí)現(xiàn)哄褒;
-
如何編寫測(cè)試表達(dá)式以實(shí)現(xiàn)所需的測(cè)試:
(1). 執(zhí)行命令,并利用命令狀態(tài)返回值來(lái)判斷狭园;
?[root@node1 ~]# echo $?
??0:成功
??1~255:失敗
(2). 測(cè)試表達(dá)式
?test EXPRESSION
?[ EXPRESSION ]
?[[ EXPRESSION ]]
?注意:EXPRESSION兩端必須有空白字符读处,否則為語(yǔ)法錯(cuò)誤。 -
bash的測(cè)試類型:
(1). 數(shù)值測(cè)試:數(shù)值比較
?-eq:是否等于唱矛;[ $num1 -eq $num2 ]
?-ne:是否不等于罚舱;[ $num1 -ne $num2 ]
?-gt:是否大于;[ $num1 -gt $num2 ]
?-ge:是否大于等于绎谦;[ $num1 -ge $num2 ]
?-lt:是否小于管闷;[ $num1 -lt $num2 ]
?-le:是否小于等于;[ $num1 -le $num2 ]
(2). 字符串測(cè)試:
?==:是否等于窃肠;
??>:是否大于包个;
?<:是否小于;
?!=:是否不等于;
?=~:左側(cè)字符串是否能夠被右側(cè)的PATTERN所匹配碧囊;
?-z "STRING":判斷指定的字符串是否為空树灶;空則為真,不空則為假糯而;
?-n "STRING":判斷指定的字符串是否不空天通;不空則為真,空則為假熄驼;
?注意:
??(1) 字符串要加引號(hào)像寒;
??(2) 要使用[[ ]];
(3). 文件測(cè)試:
?① 文件的存在性測(cè)試:存在則為真瓜贾,否則為假诺祸;
??-e FILE
??-a FILE
?② 類型測(cè)試:
??-b FILE:是否存在并且為塊設(shè)備文件;
??-c FILE:是否存在并且為字符設(shè)備文件祭芦;
??-d FILE:是否存在并且為目錄文件筷笨;
??-f FILE:是否存在并且為普通文件;
??-h|-L FILE:是否存在并且為符號(hào)鏈接文件实束;
??-p FILE:是否存在并且為命令管道文件奥秆;
??-S FILE:是否存在并且為套接字文件;
?③ 權(quán)限測(cè)試:
??-r FILE:是否存在并且對(duì)當(dāng)前用戶可讀咸灿;
??-w FILE:是否存在并且對(duì)當(dāng)前用戶可寫构订;
??-x FILE:是否存在并且對(duì)當(dāng)前用戶可執(zhí)行;
?④ 特殊權(quán)限測(cè)試:
??-u FILE:是否存在并且擁有suid權(quán)限避矢;
??-g FILE:是否存在并且擁有sgid權(quán)限悼瘾;
??-k FILE:是否存在并且擁有sticky權(quán)限;
?⑤ 文件大小測(cè)試:
??-s FILE:是否有內(nèi)容审胸;
?⑥ 時(shí)間戳測(cè)試:
??-N FILE:文件自從上一次讀操作后是否被修改過(guò)亥宿;
?⑦ 從屬關(guān)系測(cè)試:
??-O FILE:當(dāng)前用戶是否為文件的屬主;
??-G FILE:當(dāng)前用戶是否屬于文件的屬組砂沛;
?⑧ 雙目測(cè)試:
??FILE1 -ef FILE2:測(cè)試兩個(gè)文件是否為指向同一個(gè)文件系統(tǒng)上相同的inode硬鏈接烫扼;
??FILE1 -nt FILE2:FILE1是否新于FILE2;
??FILE1 -ot FILE2:FILE1是否舊于FILE2碍庵;