Shell判斷(test)命令的常用方法
命令簡介
n
Linux系統和其他類Unix系統中,有一個測試命令。它可以判斷表達式是否成立,如果成立則返回1,如果不成立則返回0。測試命令是學習Shell編程的過程中需要重點掌握的東西。
n---
命令基本用法
n
用法一
n
test 表達式n
用法二
n
[ 表達式 ]n
注意
n
- 兩種用法功能完全一致,下文均使用用法二。
- 用法二中的表達式前後一定要留有空格。
- 如果單獨使用測試命令,可以在執行完該命令之後執行echo $?查詢返回值。
n
n
n
---
整數的判斷
n
命令用法
n
[ 整數1 判斷命令 整數2 ]n
常用判斷命令n
-eq : 等於
-gt : 大於-lt : 小於-ge : 大於等於
-le : 小於等於-ne : 不等於n更多判斷命令請參考man test。
n舉例說明
n
[zenandidi: ~]$ [ 1 -eq 1 ] ; echo $? #1等於1n0n#真nn[zenandidi: ~]$ [ 1 -gt 1 ] ; echo $? #1大於1n1n#假nn#使用變數名n[zenandidi: ~]$ a=1n[zenandidi: ~]$ b=3nn[zenandidi: ~]$ [ $a -le $b ] ; echo $? #1小於等於3n0n#真n
---
字元串的判斷
n
命令用法
n
不為空
n[ -n "字元串" ]n
為空
n[ -z "字元串" ]n
相同
n[ "字元串1" = "字元串2" ]n
不相同
n[ "字元串1" != "字元串2" ]n
更多命令請參考man test。
n
注意
字元串和運算符之間一定要有空格,而且最好用雙引號包起來。n舉例說明
n
[zenandidi: ~]$ [ -z "" ] ; echo $? #空字元串n0n#真nn[zenandidi: ~]$ [ -n "" ] ; echo $? #非空字元串n1n#假nn#定義兩個字元串n[zenandidi: ~]$ str1="string1"n[zenandidi: ~]$ str2="string2"nn[zenandidi: ~]$ [ "$str1" = "$str2" ] ; echo $? #兩個字元串相同n1n#假nn[zenandidi: ~]$ str2="string1"n[zenandidi: ~]$ [ "$str1" = "$str2" ] ; echo $? #兩個字元串相同n0n#真n
---
文件的判斷
n
命令用法
n
[ 判斷命令 文件 ]n
常用判斷命令n
-e : 存在
-d : 為目錄
-f : 為普通文件-r : 可讀-w : 可寫-x : 可執行n更多判斷命令請參考man test。
n注意
n判斷是否可讀、寫、執行的時候,是在當前用戶環境下進行判斷的。
n舉例說明
n
[zenandidi: test]$ ls -lntotal 0ndrwxr-xr-x 4 zenandidi staff 136B 5 15 10:28 .ndrwx------+ 13 zenandidi staff 442B 5 15 10:28 ..n-rw-r--r-- 1 zenandidi staff 0B 5 15 10:28 onen[zenandidi: test]$ [ -d one ] ; echo $? #one是一個目錄n1n#假nn[zenandidi: test]$ [ -f one ] ; echo $? #one是一個文件n0n#真nn[zenandidi: test]$ [ -x one ] ; echo $? #one可執行n1n#假n
---
邏輯符號的使用
n
命令用法
n
邏輯或
n[ 表達式1 -o 表達式2 ]n
邏輯與
n[ 表達式1 -a 表達式2 ]n
邏輯非
n[ ! 表達式 ]n
舉例說明
n
#邏輯與n[zenandidi: ~]$ [ 1 -eq 1 -a 2 -eq 1 ] ; echo $?n1n#表達式1為真,表達式2為假,結果為假。nn#邏輯或n[zenandidi: ~]$ [ 1 -eq 1 -o 2 -eq 1 ] ; echo $?n0n#表達式1為真,表達式2為假,結果為真。nn#邏輯非n[zenandidi: ~]$ [ ! 2 -eq 1 ] ; echo $?n0n#表達式為假,結果為真。n
推薦閱讀: