格式
格式一:
test expression
格式二:
[ expression ] //?? 注意左方括號后及右方括號前有一個[空格]
說明
test是linux系統(tǒng)內(nèi)置(builtin)的命令,用于評估表達式(expression)參數(shù)(parameter),
表達式expression的參數(shù)值(argument)包括:
文件測試參數(shù),字符串測試參數(shù),數(shù)字測試參數(shù),參數(shù)組合運算符,退出狀態(tài)碼參數(shù)
多個測試語句之間可以使用邏輯運算符(!, &&, ||)連接, 優(yōu)先級: ! > && > ||
文件測試參數(shù)
操作符 | 描述 |
---|---|
-b file | 如果file是文件并且是特殊塊文件驶鹉,則返回true</div> |
-c file | 如果file是字符文件蹋凝,則返回true |
-d file | 如果file存在且是目錄鸣驱,則返回true |
-a/-e file | 如果file存在,則返回true |
-f file | 如果file存在且是常規(guī)文件莲兢,則返回true |
-g file | 如果file的GroupId已設(shè)置阎姥,則返回true |
-h/-L file | 如果file是一個符號鏈接著恩,則返回true |
-k file | 如果file文件存在且粘滯位已設(shè)置煌贴,則返回true |
-p file | 如果file是命名管道(FIFO),則返回true |
-r file | 如果file文件存在且可讀说榆,則返回true |
-s file | 如果file文件大小不為零虚吟,則返回true |
-t file | 如果file已打開并與終端關(guān)聯(lián),則返回true |
-u file | 如果file的UserId已設(shè)置娱俺,則返回true |
-w file | 如果file文件存在且可寫稍味,則返回true |
-x file | 如果file文件存在且可執(zhí)行,則返回true |
file1 -ot file2 | 如果file1比file2舊荠卷,則返回true |
file1 -nt file2 | 如果file1比file2新模庐,則返回true |
file1 -ef file2 | 如果file1是file2的符號鏈接或硬鏈接,則返回true |
字符串測試參數(shù)
操作符 | 描述 |
---|---|
-n string | 如果字符串長度非零油宜,則返回true |
-z string | 如果字符長度為零掂碱,則返回true |
string1 = string2 | 如果兩個字符相同,則返回true |
string1 != string2 | 如果兩個字符不相同慎冤,則返回true |
string | 如果字符非空疼燥,則返回true |
數(shù)值比較測試參數(shù)
操作符 | 描述 |
---|---|
num1 -eq num2 | 如果連個數(shù)值相等,則返回true |
num1 -ne num2 | 如果連個數(shù)值不等蚁堤,則返回true |
num1 -gt num2 | 如果num1大于num2醉者,則返回true |
num1 -ge num2 | 如果num1大于或等于num2,則返回true |
num1 -lt num2 | 如果num1小于num2披诗,則返回true |
num1 -le num2 | 如果num1小于或等于num2撬即,則返回true |
組合運算符參數(shù)(用于單個或多個測試)
操作符 | 描述 |
---|---|
!expression | 一元否定運算符 |
expression1 -a expression2 | 二元與運算符 |
expression1 -o expression2 | 二元或運算符 |
\ (Expression\) | 必須使用反斜杠轉(zhuǎn)義分組括號 |
例1:
if test ! -s "$1"
then
echo $1 does not exist or is empty.
fi
例2:
if [ $# -lt 2 -o ! -e "$1" ]
then
exit
fi
退出碼參數(shù)
操作符 | 描述 |
---|---|
0 | 返回true |
1 | 返回false |
>1 | 發(fā)生錯誤 |