Shell Conditional Test
在 shell 脚本判断逻辑中的一些操作符 一、字符串测试 选项 含义 示例 说明 -z 字符串为空 [ -z "$str" ] 变量未定义或值为空时为真 -n 字符串非空 [ -n "$str" ] 变量已定义且值不为空时为真 重要提示:变量必须用双引号包裹,避免未定义变量导致语法错误: # 错误写法(未定义变量会报错) [ -n $var ] # 正确写法 [ -n "$var" ] 二、文件测试 文件存在性测试 选项 含义 示例 -e 文件/目录存在 [ -e "/path" ] -a 同 -e(已废弃) 不推荐使用 文件类型测试 选项 含义 示例 -f 常规文件 [ -f file.txt ] -d 目录 [ -d "/dir" ] -L 符号链接 [ -L link ] -h 同 -L [ -h link ] -b 块设备 [ -b /dev/sda ] -c 字符设备 [ -c /dev/tty ] -p 命名管道 [ -p pipe ] -S 套接字 [ -S socket ] 权限测试 选项 含义 示例 -r 可读 [ -r file ] -w 可写 [ -w file ] -x 可执行 [ -x script.sh ] -g 设置了 setgid [ -g file ] -u 设置了 setuid [ -u file ] -k 设置了 sticky bit [ -k /tmp ] 文件属性测试 选项 含义 示例 -s 文件非空 [ -s data.log ] -N 修改后未读取 [ -N file ] -O 当前用户拥有 [ -O file ] -G 当前用户组拥有 [ -G file ] 文件比较测试 选项 含义 示例 -nt 文件1比文件2新 [ file1 -nt file2 ] -ot 文件1比文件2旧 [ file1 -ot file2 ] -ef 相同设备/Inode [ file1 -ef file2 ] 三、数值比较 选项 含义 示例 等价算术符 -eq 等于 [ $a -eq 5 ] == -ne 不等于 [ $a -ne 5 ] != -gt 大于 [ $a -gt 5 ] > -ge 大于等于 [ $a -ge 5 ] >= -lt 小于 [ $a -lt 5 ] < -le 小于等于 [ $a -le 5 ] <= 四、组合逻辑 选项 含义 示例 ! 逻辑非 [ ! -f file ] -a 逻辑与 [ -f file -a -r file ] -o 逻辑或 [ -d dir -o -L dir ] 现代写法(推荐): ...