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 # 支持通配符
比 [ ] 更安全、功能更强。