條件測試
(一)概念:對特定的條件進行判斷,以決定如何執(zhí)行操作,當(dāng)條件成立時,測試語句的返回值為0,否則為其他數(shù)值,意思就是如果 echo $? 的值是0,那么條件成立。條件測試的分類:文件測試、整數(shù)測試、字符串測試、邏輯測試。
測試方法:
方法1:test 條件表達(dá)式
方法2:[ 條件表達(dá)式 ]
(二)測試方法:
格式1: [ 操作符 文件或目錄 ]
格式2:test 操作符 文件或目錄
常用的測試操作符
-d :測試是否為目錄( Directory )
-e :測試目錄或文件是否存在(Exist)
-f :測試是否為文件(File)
-r :測試當(dāng)前用戶是否可讀(read)
-w:測試當(dāng)前用戶是否可寫(write)
-x :測試當(dāng)前用戶是否可執(zhí)行(excute)
1 [root@NEW1 ~]# [ -d /media/cdrom ] #注意這里中括號里需要和內(nèi)容有空格2 [root@NEW1 ~]# echo $? # 如果測試條件不成立,返回數(shù)字為非03 14 [root@NEW1 ~]# [ -d /root ]5 [root@NEW1 ~]# echo $?6 07 [root@NEW1 ~]# test -d /root && echo “yes” 8 “yes”9 #最后一個語句的意思是如果前面條件測試成立,則輸出yes,應(yīng)用原理:&&是一個''邏輯與''運算符,前面為真,后面為真,整個語句才為真,當(dāng)左面為真,就會繼續(xù)觸發(fā)邏輯與,繼續(xù)判斷右面才知道整個語句是否為真,所以才能輸出 yes。
格式1:[ 整數(shù)1 操作符 整數(shù)2 ]
格式2: test 整數(shù)1 操作符 整數(shù)2
常用的測試操作符
-eq : 等于 (Equal)
-ne : 不等于 (Not Equal)
-gt : 大于(Greater Than)
-lt : 小于 (Lesser Than)
-le : 小于或等于(Lesser or Equal)
-ge : 大于或等于(Greater or Equal)
1 [root@NEW1 ~]# who2 root tty1 2016-11-04 09:59 (:0)3 root pts/0 2016-11-04 09:59 (:0.0)4 [root@NEW1 ~]# who | wc -l5 26 [root@NEW1 ~]# [ $(who | wc -l) -gt 1 ] && echo ''too many.''7 too many.
格式1:[ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ]
格式2:[ -z 字符串 ]
常用的測試操作符
= : 字符串內(nèi)容相同
!= : 字符串內(nèi)容不同
-z : 字符串內(nèi)容為空
1 [root@NEW1 ~]# [ aaa = aaa ] #判斷兩個字符串是否相等 2 [root@NEW1 ~]# echo $? 3 0 4 [root@NEW1 ~]# [ aaa != aaa ] 5 [root@NEW1 ~]# echo $? 6 1 7 [root@NEW1 ~]# [ -z ''] #引號里沒有字符串,為空 8 [root@NEW1 ~]# echo $? 9 010 [root@NEW1 ~]# [ -z 'aaa' ] #引號里有字符串,不為空11 [root@NEW1 ~]# echo $?12 1
1 [root@NEW1 ~]# read -p "請輸入用戶名: " name #提示用戶輸入字符串,并賦值給name變量 2 請輸入用戶名: #用戶直接回車,沒有輸入 3 [root@NEW1 ~]# [ -z $name ] #判斷name變量是否為空 4 [root@NEW1 ~]# echo $? 5 0 #name為空,判斷成立,顯示0 6 [root@NEW1 ~]# read -p "請輸入用戶名: " name 7 請輸入用戶名: Mr.Mangood 8 [root@NEW1 ~]# [ -z $name ] 9 [root@NEW1 ~]# echo $?10 1
1 [root@NEW1 ~]# echo $LANG #查看 LANG 語言變量2 zh_CN.UTF-83 [root@NEW1 ~]# [ $LANG != "en.US" ] && echo "Not en.US" #如果LANG不為en.US,則輸出提示,考察的也是$變量的用法4 Not en.US
格式:
[ 表達(dá)式 ] 操作符 [ 表達(dá)式2 ] ……
命令1 操作符 命令2 ……
常用的操作符 ( 注意:-a和-o放在[]里面用,&&和||放在[]外面用 )
-a 或 && 邏輯與
-o 或 || 邏輯或
??! 邏輯否
1 [root@NEW1 ~]# [ -d /etc ] && [ -r /etc ] && echo "you can open it"2 you can open it3 [root@NEW1 ~]# [ -d /etc ] || [ -d /home ] && echo "OK" 4 OK
1 [root@NEW1 ~]# [ -d /etc ] || echo "測試或運算符當(dāng)左邊為真時,還是否執(zhí)行右面"2 [root@NEW1 ~]# echo $? #左側(cè)為真,不執(zhí)行右側(cè)echo部分3 0 #整體為真,因此輸出0
1 [root@NEW1 ~]# [ 2 -eq 2 -a 3 -eq 4 ] && [ -d /etc ]2 [root@NEW1 ~]# echo $?3 14 5 [root@NEW1 ~]# [ 2 -eq 2 -o 3 -eq 4 ] && [ -d /etc ]6 [root@NEW1 ~]# echo $?7 0
聯(lián)系客服