1、字符串的比较判断
=:第一个字符串与第二个字符串相同。 !=:第一个字符串与第二个字符串不相同,其中 “ !”表示取反。 -z:检查字符串是否为空,对于未定义或赋予空值的变量将是为空串 -n:检查字符串的长度,当串的长度大于0时为真(串非空)
2、数字的判断
-eq:第一个数等于(Equal)第二个数; -ne:第一个数不等于(Not Equal)第二个数; -gt:第一个数大于(Greater Than)第二个数; -lt:第一个数小于(Lesser Than)第二个数; -le:第一个数小于或等于(Lesser or Equal)第二个数; -ge:第一个数大于或等于(Greater or Equal)第二个数;
3、文件的判断
-d:测试是否为目录(Directory); -e:测试文件或目录是否存在(Exist); -f:测试是否为文件(File); -r:测试当前用户是否有权限读取(Read); -w:测试当前用户是否有权限写入(Write); -x:测试是否设置有可执行(Excute)权限; -c:测试文件是否为字符特殊文件 -b:测试文件是否为块特殊文件 -s:测试文件大小是否为非0 -t:测试当文件描述符(默认为1)指定的设备是否为终端
4、复杂逻辑判断
!:表示“不”,只有当条件不成立时,整个测试命令返回的值才为0,即结果成立;
&&:表示“而且”,只有当前后两个条件都成立时,整个测试命令的返回值才为0,即结果成立,使用test命令测试时可以使用“-a”代替;
||:表示“或者”,只要前后两个条件有一个成立,整个测试命令返回的值即为0,即结果成立。使用test命令测试时可以使用“-o”代替;
比如:
if [ $USER = "oracle" ] || [ $USER = "mysql" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi
备注:对文件的判断所使用到的相关参数整理
[ -a FILENAME ] 如果 FILENAME 存在则为真。 [ -b FILENAME ] 如果 FILENAME 存在且是一个块特殊文件则为真。 [ -c FILENAME ] 如果 FILENAME 存在且是一个字特殊文件则为真。 [ -d FILENAME ] 如果 FILENAME 存在且是一个目录则为真。 [ -e FILENAME ] 如果 FILENAME 存在则为真。 [ -f FILENAME ] 如果 FILENAME 存在且是一个普通文件则为真。 [ -g FILENAME ] 如果 FILENAME 存在且已经设置了SGID则为真。 [ -h FILENAME ] 如果 FILENAME 存在且是一个符号连接则为真。 [ -k FILENAME ] 如果 FILENAME 存在且已经设置了粘制位则为真。 [ -p FILENAME ] 如果 FILENAME 存在且是一个名字管道(F如果O)则为真。 [ -r FILENAME ] 如果 FILENAME 存在且是可读的则为真。 [ -s FILENAME ] 如果 FILENAME 存在且大小不为0则为真。 [ -t FD ] 如果文件描述符 FD 打开且指向一个终端则为真。 [ -u FILENAME ] 如果 FILENAME 存在且设置了SUID (set user ID)则为真。 [ -w FILENAME ] 如果 FILENAME 如果 FILENAME 存在且是可写的则为真。 [ -x FILENAME ] 如果 FILENAME 存在且是可执行的则为真。 [ -O FILENAME ] 如果 FILENAME 存在且属有效用户ID则为真。 [ -G FILENAME ] 如果 FILENAME 存在且属有效用户组则为真。 [ -L FILENAME ] 如果 FILENAME 存在且是一个符号连接则为真。 [ -N FILENAME ] 如果 FILENAME 存在 and has been mod如果ied since it was last read则为真。 [ -S FILENAME ] 如果 FILENAME 存在且是一个套接字则为真。 [ FILENAME1 -nt FILENAME2 ] 如果 FILENAME1 has been changed more recently than FILENAME2, or 如果 FILENAME1 exists and FILENAME2 does not则为真。 [ FILENAME1 -ot FILENAME2 ] 如果 FILENAME1 比 FILENAME2 要老, 或者 FILENAME2 存在且 FILENAME1 不存在则为真。 [ FILENAME1 -ef FILENAME2 ] 如果 FILENAME1 和 FILENAME2 指向相同的设备和节点号则为真。