Shell的条件判断符及特殊变量

目录

1 shell的条件判断符号

1.1 按照文件类型进行判断

选项 作用
-b 文件 判断该文件是否存在,并且是否为块设备文件(是的为真)
-c 文件 判断该文件是否存在,并且是否为字符设备文件(是的话为真)
-d 文件 判断该文件是否存在,并且是否为目录文件(是的话为真)
-e 文件 判断该文件是否存在(存在的话为真)
-f 文件 判断该文件是否存在,并且是否为普通文件(是的话为真)
-L 文件 判断该文件是否存在,并且是否为符号链接文件(是的话为真)
-p 文件 判断该文件是否存在,并且是否为管道文件(是的话为真)
-s 文件 判断该文件是否存在,并且是否为非空(是的话为真)
-S 文件 判断该文件是否存在,并且是否为套接字文件(是的话为真)

1.2 按照文件权限进行判断

选项 作用
-r 文件 判断该文件是否存在,并且是否该文件拥有读权限(有为真)
-w 文件 判断该文件是否存在,并且是否该文件拥有写权限(有为真)
-x 文件 判断该文件是否存在,并且是否该文件拥有执行权限(有为真)
-u 文件 判断该文件是否存在,并且是否该文件拥有SUID权限(有为真)
-g 文件 判断该文件是否存在,并且是否该文件拥有SGID(有为真)
-k 文件 判断该文件是否存在,并且是否该文件拥有Sbit(有为真)

1.3 两个文件之间进行比较

选项 作用
文件1 -nt 文件2 判断文件1的修改时间是否比文件2的新(若是则为真)
文件1 -ot 文件2 判断文件1的修改时间是否比文件2的旧(若是则为真)
文件1 -ef 文件2 判断文件1是否和文件2的inode号一致,可以理解为两个文件是否为同一个文件,这个判断用于判断硬链接是很好的方法

1.4 两个整数之间比较

选项 作用
整数1 -eq 整数2 判断整数1是否和整数2相等(相等为真)
整数1 -ne 整数2 判断整数1是否和整数2不相等(不相等为真)
整数1 -gt 整数2 判断整数1是否大于整数2(大于为真)
整数1 -lt 整数2 判断整数1是否小于整数2(小于为真)
整数1 -ge 整数2 判断整数1是否大于等于整数2(大于等于为真)
整数1 -le 整数2 判断整数1是否小于等于整数2(小于等于为真)

eq ==> equal
ne ==> not equal
gt ==> greater than
lt ==> less than
ge ==> greater than or equal
le ==> less than or equal

1.5 字符串的判断

选项 作用
-z 字符串 判断字符串是否为空(为空返回真)
-n 字符串 判断字符串是否为非空(非空返回真)
字串1 == 字串2 判断字符串1是否和字符串2相等(相等返回真)
字串 != 字串2 判断字符串1是否和字符串2不相等(不相等返回真)

1.6 多重条件判断

选项 作用
判断1 -a 判断2 逻辑与,判断1和判断2都成立,最终的结果才为真
判断1 -o 判断2 逻辑或,判断1和判断2有一个成立,最终的结果就为真
! 判断 逻辑非,是原始的判断是取反

2 shell的特殊变量

$0 当前脚本的名字,如果包含路径则会一并输出
$n 传递给脚本或函数的参数,第n个参数值,n=1..9,若n大于就则需用{}括起来,如:${10}
$* 传递给脚本或函数的参数个数。此选项参数可超过9个。
$# 传递给脚本或函数的所有参数。
$$ 当前Shell进程ID(脚本运行的当前进程ID号)
$! 执行上一个指令的PID(后台运行的最后一个进程的进程ID号)
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$- 显示shell使用的当前选项,与set命令功能相同
$_ 在此之前执行的命令或脚本的最后一个参数
$@$*类似,但是可以当作数组用

猜你喜欢

转载自blog.csdn.net/mr_rsq/article/details/80791171