常用的:
[ -a FILE ] 如果 FILE 存在則為真。
[ -d FILE ] 如果 FILE 存在且是一個目錄則返回為真。
[ -e FILE ] 如果 指定的文件或目錄存在時返回為真。
[ -f FILE ] 如果 FILE 存在且是一個普通文件則返回為真。
[ -r FILE ] 如果 FILE 存在且是可讀的則返回為真。
[ -w FILE ] 如果 FILE 存在且是可寫的則返回為真。(一個目錄為了它的內容被訪問必然是可執行的)
[ -x FILE ] 如果 FILE 存在且是可執行的則返回為真。
條件表達式 | 意義 |
---|---|
1.文件類檢測,例如[ -e /tmp/a.log ]。如非特別說明,則所有文件類操作都會追蹤到軟鏈接的源文件。 | |
-e file | 文件是否存在(exist) |
-f file | 文件是否存在且為普通文件(file) |
-d file | 文件是否存在且為目錄(directory) |
-b file | 文件是否存在且為塊設備block device |
-c file | 文件是否存在且為字符設備character device |
-S file | 文件是否存在且為套接字文件Socket |
-p file | 文件是否存在且為命名管道文件FIFO(pipe) |
-L file | 文件是否存在且是一個鏈接文件(Link) |
2. 文件屬性檢測,如test -r /tmp/a.log。如非特別說明,則所有文件類操作都會追蹤到軟鏈接的源文件。 | |
-r file | 文件是否存在且當前用戶可讀 |
-w file | 文件是否存在且當前用戶可寫 |
-x file | 文件是否存在且當前用戶可執行 |
-u file | 文件是否存在且設置了SUID |
-g file | 文件是否存在且設置了SGID |
-k file | 文件是否存在且設置了sbit(sticky bit) |
-s file | 文件是否存在且大小大於0字節,即用於檢測文件是否為非空白文件 |
-N file | 文件是否存在,且自上次read后是否被modify |
3. 兩個文件之間的比較,如:test file1 -nt file2 | |
file1 -nt file2 | (newer than)判斷file1是否比file2新 |
file1 -ot file2 | (older than)判斷file1是否比file2舊 |
file1 -ef file2 | (equal file)判斷file2與file2是否為同一文件,可用在判斷hard link的判定上。主要意義在判定,兩個文件是否均指向同一個分區上的同一個inode |
4. 兩個整數之間的判定,支持正負數,但不支持小數。例如test n1 -eq n2 | |
int1 -eq int2 | 兩數值相等(equal) |
int1 -ne int2 | 兩數值不等(not equal) |
int1 -gt int2 | n1大於n2(greater than) |
int1 -lt int2 | n1小於n2(less than) |
int1 -ge int2 | n1大於等於n2(greater than or equal) |
int1 -le int2 | n1小於等於n2(less than or equal) |
5. 判定字符串 | |
-z string | (zero)判定字符串是否為空?若string為空字符串,則為true |
-n string | 判定字符串是否非空?若string為空字符串,則false。注:-n可省略 |
string1 = string2 string1 == string2 | string1和string2是否相同。相同則返回true。"=="和"="等價,但"="可移植性更好 |
str1 != str2 | str1是否不等於str2,若不等,則返回true |
str1 > str2 | str1字母順序是否大於str2,若大於,則返回true |
str1 < str2 | str1字母順序是否小於str2,若小於,則返回true |
6.邏輯運算符,例如:test -r filename -a -x filename | |
-a或&& | (and)兩表達式同時為true時才為true。"-a"只能在test或[]中使用,&&只能在[[]]中使用 |
-o或|| | (or)兩表達式任何一個true則為true。"-o"只能在test或[]中使用,||只能在[[]]中使用 |
[ ! EXPR ] | 對表達式取反 |
( ) | 用於改變表達式的優先級,為了防止被shell解析,應該加上反斜線轉義\(\) |
[ ] || [ ] | 用OR來合並兩個條件 |
[ ] && [ ] | 用AND來合並兩個條件 |
忘記參考的哪兒了,請見諒