shell判斷式與判斷符號[]
1. 判斷式test命令用於檢測檔案類型和比較值。 判斷檔案是否存在:
[work@www sh]$ test -e file.txt && echo "exist" || echo "not exist" not exist[work@www sh]$
檢查檔案類型: -e 檔案是否存在 test -e filename
-f 檔案是否存在,且為檔案 file
-d 檔案是否存在,且為目錄 directory
-b 檔案是否存在,且為block device裝置
-c 檔案是否存在,且為character device裝置
-S 檔案是否存在,且為Socket檔案
-p 檔案是否存在,且為FIFO(pipe)檔案
-L 檔案是否存在,且為串連檔案
檢查檔案許可權 -r 檔案是否存在,且可讀許可權
-w 檔案是否存在,且可寫入權限
-x 檔案是否存在,且可執行許可權
-u 檔案是否存在,且具有SUID屬性
-g 檔案是否存在,且具有SGID屬性
-k 檔案是否存在,且具有 Sticky bit 屬性
-s 檔案是否存在,且為 非空白檔案
兩個檔案比較 -nt newer than 判斷file1是否比file2新
test file1 -nt file2
-ot older than 判斷file1是否比file2舊
-ef 判斷是否為同一檔案,可用在判斷hard link上,判定兩個檔案是否指向同一個inode
兩個整數的判斷 -eq equal 相等, test n1 -eq n2
-ne not equal 不相等
-gt greater than 大於
-lt less than 小於
-ge greater than or equal 大於等於
-le less than or equal 小於等於
判定字串 test -z string 判斷字串是否為0, string為空白,返回true, test -z string
test -n string 判斷字串是否非為0, string 為空白, 返回false, -n可省略
test str1 = str2 是否相等
test str1 != str2 是否不相等
多重條件 -a 同時成立,and , test -r file -a -x file : file同時具有rx許可權時,返回true
-o 任意一個成立, or
! 取反
如下:
#!/bin/bashtest -e pass && echo "file exist"test -f pass && echo "regular file"test -d pass && echo "directory"
2. 判斷符號[]判斷符號[] 的使用同test基本一樣。 []裡面每個組件都需要用空格分隔。 變數最好用引號包圍。
#!/bin/bashname="Bill gates"[ "$name" == "bill gates" ]echo $?
地址:http://blog.csdn.net/yonggang7/article/details/40479141