Shell判斷(test)命令的常用方法

命令簡介

n

Linux系統和其他類Unix系統中,有一個測試命令。它可以判斷表達式是否成立,如果成立則返回1,如果不成立則返回0。測試命令是學習Shell編程的過程中需要重點掌握的東西。

n

---

命令基本用法

n

用法一

n

test 表達式n

用法二

n

[ 表達式 ]n

注意

n

  1. 兩種用法功能完全一致,下文均使用用法二。
  2. n

  3. 用法二中的表達式前後一定要留有空格。
  4. n

  5. 如果單獨使用測試命令,可以在執行完該命令之後執行echo $?查詢返回值。
  6. 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

推薦閱讀:

TAG:Linux | Unix | Shell编程开发 |