if 判断与 test 命令使用

1. 基本关系

  • test 条件 就是判断真假
  • 真 → 返回 0
  • 假 → 返回 非 0
  • if 就是根据 test 的结果执行代码

2. 两种写法完全等价

bash

test -f file.txt

bash

[ -f file.txt ]

注意:括号两边必须有空格


3. if 最标准写法

bash

if [ 条件 ]; then
  条件成立时执行
else
  条件不成立时执行
fi

4. 最常用 test 条件(直接背)

文件判断

  • [ -f file ] 是否是普通文件
  • [ -d dir ] 是否是目录
  • [ -e file ] 文件 / 目录是否存在
  • [ -x file ] 是否可执行
  • [ -r file ] 是否可读

字符串判断

  • [ "$a" = "$b" ] 字符串相等
  • [ "$a" != "$b" ] 不等
  • [ -z "$a" ] 字符串为空
  • [ -n "$a" ] 字符串非空

数字判断

  • [ $a -eq $b ] 等于
  • [ $a -ne $b ] 不等
  • [ $a -gt $b ] 大于
  • [ $a -lt $b ] 小于
  • [ $a -ge $b ] 大于等于
  • [ $a -le $b ] 小于等于

逻辑运算

  • [ 条件1 -a 条件2 ] 与(and)
  • [ 条件1 -o 条件2 ] 或(or)
  • [ ! 条件 ] 非(not)

5. 超实用示例

示例 1:判断文件是否存在

bash

if [ -f "test.txt" ]; then
  echo "文件存在"
else
  echo "文件不存在"
fi

示例 2:判断数字大小

bash

a=10
b=20

if [ $a -lt $b ]; then
  echo "a 小于 b"
fi

示例 3:判断目录是否存在

bash

if [ -d "/tmp" ]; then
  echo "tmp 目录存在"
fi

示例 4:多条件

bash

if [ -f file.txt -a -x file.txt ]; then
  echo "文件存在且可执行"
fi

6. 进阶:[[]] 更强(推荐)

bash

if [[ $a > $b ]]; then
if [[ $a == abc* ]]; then   # 支持通配符

[ ] 更安全、功能更强。

滚动至顶部