test operators

test operators

常用测试操作符

-zzero检查字符串是否为空(字符串长度为 0)
-eexist检查普通文件是否存在
-ffile检查是否为普通文件(不是目录或设备文件)
-ddirectory检查是否为目录
-nnon-empty检查字符串是否非空
测试选项含义
-z检查字符串是否为空
-n检查字符串是否非空
-e检查文件是否存在
-f检查是否为普通文件
-d检查是否为目录
-r检查文件是否可读
-w检查文件是否可写
-x检查文件是否可执行
-L检查是否为符号链接
-s检查文件是否非空
-O检查文件是否属于当前用户
-G检查文件是否属于当前用户组
-b检查是否为块设备文件
-c检查是否为字符设备文件
-p检查是否为命名管道
-S检查是否为套接字
-eq检查两个整数是否相等
-ne检查两个整数是否不相等
-gt检查第一个整数是否大于第二个
-lt检查第一个整数是否小于第二个
-ge检查第一个整数是否大于等于第二个
-le检查第一个整数是否小于等于第二个

1. 字符串相关测试

  • -z:检查字符串是否为空(长度为 0)。
    • 示例
if [ -z "$var" ]; then
  echo "字符串为空"
fi
  • -n:检查字符串是否非空(长度不为 0)。
    • 示例
if [ -n "$var" ]; then
  echo "字符串非空"
fi
  • string1 = string2:检查两个字符串是否相等。
    • 示例
if [ "$var1" = "$var2" ]; then
  echo "两个字符串相等"
fi
  • string1 != string2:检查两个字符串是否不相等。
    • 示例
if [ "$var1" != "$var2" ]; then
  echo "两个字符串不相等"
fi

2. 文件相关测试

  • -e:检查文件是否存在(任何类型的文件,包括目录、符号链接等)。
    • 示例
if [ -e "/path/to/file" ]; then
  echo "文件存在"
fi
  • -f:检查是否为普通文件(不是目录、设备文件等)。
    • 示例
if [ -f "/path/to/file" ]; then
  echo "这是一个普通文件"
fi
  • -d:检查是否为目录。
    • 示例
if [ -d "/path/to/directory" ]; then
  echo "这是一个目录"
fi
  • -r:检查文件是否可读。
    • 示例
if [ -r "/path/to/file" ]; then
  echo "文件可读"
fi
  • -w:检查文件是否可写。
    • 示例
if [ -w "/path/to/file" ]; then
  echo "文件可写"
fi
  • -x:检查文件是否可执行。
    • 示例
if [ -x "/path/to/file" ]; then
  echo "文件可执行"
fi
  • -L:检查是否为符号链接。
    • 示例
if [ -L "/path/to/link" ]; then
  echo "这是一个符号链接"
fi
  • -s:检查文件是否非空(文件大小大于 0 字节)。
    • 示例
if [ -s "/path/to/file" ]; then
  echo "文件非空"
fi
  • -O:检查文件是否属于当前用户(Owner)。
    • 示例
if [ -O "/path/to/file" ]; then
  echo "文件属于当前用户"
fi
  • -G:检查文件是否属于当前用户组(Group)。
    • 示例
if [ -G "/path/to/file" ]; then
  echo "文件属于当前用户组"
fi

3. 数字比较

  • int1 -eq int2:检查两个整数是否相等。
    • 示例
if [ "$var1" -eq "$var2" ]; then
  echo "两个整数相等"
fi
  • int1 -ne int2:检查两个整数是否不相等。
    • 示例
if [ "$var1" -ne "$var2" ]; then
  echo "两个整数不相等"
fi
  • int1 -gt int2:检查第一个整数是否大于第二个。
    • 示例
if [ "$var1" -gt "$var2" ]; then
  echo "第一个整数大于第二个"
fi
  • int1 -lt int2:检查第一个整数是否小于第二个。
    • 示例
if [ "$var1" -lt "$var2" ]; then
  echo "第一个整数小于第二个"
fi
  • int1 -ge int2:检查第一个整数是否大于或等于第二个。
    • 示例
if [ "$var1" -ge "$var2" ]; then
  echo "第一个整数大于或等于第二个"
fi
  • int1 -le int2:检查第一个整数是否小于或等于第二个。
    • 示例
if [ "$var1" -le "$var2" ]; then
  echo "第一个整数小于或等于第二个"
fi

4. 逻辑操作符

  • -a:与(and)逻辑操作符。用于测试多个条件是否都为真。
    • 示例
if [ -e "/path/to/file" -a -r "/path/to/file" ]; then
  echo "文件存在且可读"
fi
  • -o:或(or)逻辑操作符。用于测试任意一个条件是否为真。
    • 示例
if [ -e "/path/to/file" -o -d "/path/to/directory" ]; then
  echo "文件存在或目录存在"
fi
  • !:非(not)逻辑操作符。用于测试条件是否为假。
    • 示例
if [ ! -e "/path/to/file" ]; then
  echo "文件不存在"
fi

5. 特殊文件测试

  • -b:检查文件是否是块设备文件(block device)。
    • 示例
if [ -b "/dev/sda1" ]; then
  echo "这是一个块设备文件"
fi
  • -c:检查文件是否是字符设备文件(character device)。
    • 示例
if [ -c "/dev/ttyS0" ]; then
  echo "这是一个字符设备文件"
fi
  • -p:检查文件是否是命名管道(FIFO)(pipeline)。
    • 示例
if [ -p "/path/to/fifo" ]; then
  echo "这是一个命名管道"
fi
  • -S:检查文件是否是套接字(Socket)。
    • 示例
if [ -S "/path/to/socket" ]; then
  echo "这是一个套接字文件"
fi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值