[ -f $file_var ]: 如果给定的变量包含正常的文件路经或文件名,则返回真。

[ -x $var ]:如果给定的变量包含的文件可执行,则返回真

[ -d $var ]:如果给定的变量包含的是目录则返回真。

[ -e $var ]:如果给定的变量包含的文件存在,则返回真

[ -c $var ]:如果给定的变量包含的是一个字符 设备文件的路径,则返回真。

[ -b $var ]:如果给定的变量包含的是一个快设备文件的路径,则返回真。

[ -w $var ]:如果给定的变量包含的文件可写,则返回真。

[ -r $var ]:如果给定的变量包含的文件可读,则返回真。

[ -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                                           文件存在并且可执行