Shell 脚本 test 命令详解
test命令在bash shell脚本中经常以中括号([])的形式出现,而且在脚本中使用字母来表示比符号表示更专业,出错率更低。
| 测试标志 | 代表意义 |
|---|---|
| 文件名、文件类型 | |
| -e | 该文件名是否存在 |
| -f | 该文件名是否存在且为file |
| -d | 该文件名是否存在且为目录 |
| -b | 该文件名是否存在且为一个block |
| -c | 该文件名是否存在且为一个character device设备 |
| -S | 该文件名是否存在且为一个socket文件 |
| -p | 该文件名是否存在且为一个FIFO(pipe)文件 |
| -L | 该文件名是否存在且为一个连接文件 |
| 文件权限检测 | |
| -r | 检测文件名是否存在且具有“可读”权限 |
| -w | 检测文件名是否存在且具有“可写”权限 |
| -x | 检测文件名是否存在且具有“可执行”权限 |
| -u | 检测文件名是否存在且具有“SUID”权限 |
| -g | 检测文件名是否存在且具有“SGID”权限 |
| -k | 检测文件名是否存在且具有“Sticky bit”权限 |
| -s | 检测文件名是否存在且为“非空白文件” |
| 两个文件的比较 | |
| -nt | (newer than)判断file1是否比file2新 |
| -ot | (older than)判断file是否比file2旧 |
| -ef | 判断file1与file2是否为同一个文件,可用在判断hard link上 |
| 数字之间的判定 | |
| -eq | equal |
| -ne | not equal |
| -gt | greater than |
| -lt | less than |
| -ge | greater than or equal |
| -le | less than or equal |
| 判断字符串的数据 | |
| test -z string | 判断字符串是否为0,若为空返回true |
| test -n string | 判断字符串是否为0,若为空返回false |
| test str1 = str2 | 判断str1是否等于str2,若相等,返回true |
| test str1 != str2 | 判断str1是否等于str2,若相等,返回false |
| 多重条件的判断 | |
| -a | 两个条件同时成立,eg:test -r file a test -x file,同时成立返回true |
| -o | 任何一个条件成立,eg:test -r file o test -x file,同时成立返回true |
| ! | 反向状态,如test!-x file,当file不具有x时,返回true |

浙公网安备 33010602011771号