[ -f $file_var ]: 若是給定的變量包含正常的文件路經或文件名,則返回真。bash
[ -x $var ]:若是給定的變量包含的文件可執行,則返回真blog
[ -d $var ]:若是給定的變量包含的是目錄則返回真。字符串
[ -e $var ]:若是給定的變量包含的文件存在,則返回真class
[ -c $var ]:若是給定的變量包含的是一個字符 設備文件的路徑,則返回真。test
[ -b $var ]:若是給定的變量包含的是一個快設備文件的路徑,則返回真。變量
[ -w $var ]:若是給定的變量包含的文件可寫,則返回真。擴展
[ -r $var ]:若是給定的變量包含的文件可讀,則返回真。file
[ -L $var ]:若是給定的變量包含的是一個符號連接,則返回真。終端
[[ $str1 = $str2 ]]: 當str1等於str2時,返回真,也就是說,str1和str2包含的文本是如出一轍的。命名
[[ $str1 ==$str2 ]]: 這是檢查字符串是否相等的另外一種寫法。也能夠檢查兩個字符串是否不一樣。
[[ $str1 != $str2 ]]: 若是str1和str2不相同,則返回真。
[[ -z $str1 ]]: 若是str1包含的是空字符串,則返回真。
[[ -n $str1 ]]: 若是str1包含的非空字符串,則返回真。
[[ "$str1 =~ ^abc "]]: 匹配$str1 是否是以abc 開頭,固然匹配後面還能夠用正則來擴展 若是要非匹配的話[[ ! "$str1 =~ ^abc "]] 加上一個感嘆好便可
test命令能夠用來執行條件檢測。用test有助於避免使用過多的括號。
例如
if [ $var -eq 0 ]; then echo "True"; fi or if test $var -eq 0 ; then echo "True" fi
if test (表達式爲真) if test !表達式爲假 test 表達式1 –a 表達式2 兩個表達式都爲真 test 表達式1 –o 表達式2 兩個表達式有一個爲真 2)判斷字符串 test –n 字符串 字符串的長度非零 test –z 字符串 字符串的長度爲零 test 字符串1=字符串2 字符串相等 test 字符串1!=字符串2 字符串不等 3)判斷整數 test 整數1 –eq 整數2 整數相等 test 整數1 –ge 整數2 整數1大於等於整數2 test 整數1 –gt 整數2 整數1大於整數2 test 整數1 –le 整數2 整數1小於等於整數2 test 整數1 –lt 整數2 整數1小於整數2 test 整數1 –ne 整數2 整數1不等於整數2 4)判斷文件 test File1 –ef File2 兩個文件具備一樣的設備號和i結點號 test File1 –nt File2 文件1比文件2 新 test File1 –ot File2 文件1比文件2 舊 test –b File 文件存在而且是塊設備文件 test –c File 文件存在而且是字符設備文件 test –d File 文件存在而且是目錄 test –e File 文件存在 test –f File 文件存在而且是正規文件 test –g File 文件存在而且是設置了組ID test –G File 文件存在而且屬於有效組ID test –h File 文件存在而且是一個符號連接(同-L) test –k File 文件存在而且設置了sticky位 test –b File 文件存在而且是塊設備文件 test –L File 文件存在而且是一個符號連接(同-h) test –o File 文件存在而且屬於有效用戶ID test –p File 文件存在而且是一個命名管道 test –r File 文件存在而且可讀 test –s File 文件存在而且是一個套接字 test –t FD 文件描述符是在一個終端打開的 test –u File 文件存在而且設置了它的set-user-id位 test –w File 文件存在而且可寫 test –x File 文件存在而且可執行