Bash 脚本中的条件判断语法详解

2025.5.29 杂七杂八 1545

Bash 脚本中的条件判断语法详解 杂七杂八-第1张

本文深入解析Bash脚本中的条件判断语法,涵盖基础if语句、test命令、方括号与双方括号的区别、逻辑运算符应用以及实际案例演示,帮助开发者编写更健壮的Shell脚本。

一、Bash条件判断基础

Bash脚本中的条件判断主要通过if语句实现,其基本语法结构如下:

if [ condition ]; then
     条件为真时执行的命令
elif [ another_condition ]; then
     其他条件判断
else
     所有条件都不满足时执行
fi

二、条件测试方法

1. test命令与方括号

方括号[]实际上是test命令的另一种形式,两者完全等价:

 字符串比较
if [ "$str1" = "$str2" ]; then
    echo "字符串相等"
fi

 数值比较
if [ $num1 -gt $num2 ]; then
    echo "num1大于num2"
fi

2. 双方括号[[ ]]

双方括号是Bash的扩展语法,支持更多特性且更安全:

if [[ $var == .txt ]]; then
    echo "变量以.txt结尾"
fi

 支持正则匹配
if [[ "$email" =~ ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,}$ ]]; then
    echo "有效的邮箱地址"
fi

三、常用条件运算符

1. 文件测试运算符

  • -e file:文件存在
  • -f file:是普通文件
  • -d file:是目录
  • -r file:可读
  • -w file:可写
  • -x file:可执行

2. 字符串比较

  • ===:相等
  • !=:不相等
  • -z:字符串为空
  • -n:字符串非空

3. 数值比较

  • -eq:等于
  • -ne:不等于
  • -gt:大于
  • -ge:大于等于
  • -lt:小于
  • -le:小于等于

四、逻辑运算符组合

可以组合多个条件进行复杂判断:

 使用-a(AND)和-o(OR)
if [ $age -gt 18 -a $age -lt 60 ]; then
    echo "适龄工作者"
fi

 双方括号中使用&&和||
if [[ -f "$file" && -r "$file" ]]; then
    echo "文件存在且可读"
fi

五、实际应用案例

检查服务状态的实用脚本:

!/bin/bash

service_name="nginx"

if systemctl is-active --quiet $service_name; then
    echo "$service_name 正在运行"
elif systemctl is-enabled $service_name; then
    echo "$service_name 已启用但未运行"
else
    echo "$service_name 未安装或未启用"
    exit 1
fi

六、最佳实践建议

  1. 变量引用始终使用双引号,防止空值或含空格的值导致错误
  2. 优先使用[[ ]]而非[ ],它更安全且功能更强大
  3. 复杂的条件判断可以拆分为多个if语句提高可读性
  4. 使用(( ))进行算术运算比较

评论