Bash常见条件语句和循环语句

以下是 Bash 中常用的条件语句和循环语句分类及语法说明,附带典型用例:


一、条件语句

1. if 语句

作用 :根据条件执行不同代码块
语法

bash 复制代码
if [ 条件 ]; then
    # 条件为真时执行
elif [ 其他条件 ]; then
    # 其他条件为真时执行
else
    # 所有条件为假时执行
fi

示例

bash 复制代码
if [ -f "/path/file" ]; then
    echo "文件存在"
elif [ -d "/path" ]; then
    echo "路径是目录"
else
    echo "路径无效"
fi
2. case 语句

作用 :多分支条件匹配(类似 switch-case
语法

bash 复制代码
case $变量 in
    模式1)
        # 匹配模式1时执行
        ;;
    模式2|模式3)
        # 匹配模式2或3时执行
        ;;
    *)
        # 默认情况
        ;;
esac

示例

bash 复制代码
case $OS in
    "Linux")
        echo "使用 apt 安装"
        ;;
    "Darwin")
        echo "使用 brew 安装"
        ;;
    *)
        echo "未知系统"
        ;;
esac

二、循环语句

1. for 循环

作用 :遍历列表或范围
语法

bash 复制代码
for 变量 in 列表; do
    # 循环体
done

示例

bash 复制代码
# 遍历列表
for fruit in "apple" "banana" "orange"; do
    echo "水果: $fruit"
done

# 遍历数字范围
for i in {1..5}; do
    echo "数字: $i"
done

# 遍历文件
for file in *.txt; do
    echo "处理文件: $file"
done
2. while 循环

作用 :条件为真时重复执行
语法

bash 复制代码
while [ 条件 ]; do
    # 循环体
done

示例

bash 复制代码
# 基础用法
count=0
while [ $count -lt 5 ]; do
    echo "计数: $count"
    ((count++))
done

# 读取文件逐行处理
while read line; do
    echo "行内容: $line"
done < file.txt

# 无限循环(需手动退出)
while true; do
    echo "运行中..."
    sleep 1
done
3. until 循环

作用 :条件为假时重复执行(与 while 相反)
语法

bash 复制代码
until [ 条件 ]; do
    # 循环体
done

示例

bash 复制代码
count=0
until [ $count -ge 5 ]; do
    echo "计数: $count"
    ((count++))
done

三、循环控制语句

语句 作用 示例
break 退出当前循环 while true; do break; done
continue 跳过本次循环进入下一次 for i in {1..3}; do continue; echo "不会执行"; done
exit 退出整个脚本 if [ ! -f "file" ]; then exit 1; fi

四、复合条件逻辑

操作符 作用 示例
&& 逻辑 AND [ -f file ] && echo "存在"
|| 逻辑 OR [ -d dir ] || mkdir dir
! 逻辑 NOT if ! [ -x cmd ]; then echo "不可执行"; fi

五、典型应用场景

1. 文件批量处理
bash 复制代码
for file in *.log; do
    if [ -s "$file" ]; then
        gzip "$file"
    else
        rm "$file"
    fi
done
2. 用户输入验证
bash 复制代码
while true; do
    read -p "输入密码: " pass
    if [ "${#pass}" -ge 8 ]; then
        break
    else
        echo "密码需至少8位!"
    fi
done
3. 服务状态监控
bash 复制代码
until systemctl is-active nginx; do
    echo "Nginx 未运行,尝试启动..."
    systemctl start nginx
    sleep 2
done

六、注意事项

  1. 空格敏感[] 内必须加空格(如 [ -f file ])。
  2. 变量引号 :字符串比较时用 "$var" 避免空值错误。
  3. 数值比较 :用 -eq-lt 等,而非 ==<(适用于 [ ])。
  4. 现代语法[[ ]] 支持正则和更灵活的逻辑(如 [[ $var =~ ^[0-9]+$ ]])。

掌握这些语句后,可以覆盖 95% 的 Bash 脚本编写需求!

相关推荐
斯是 陋室2 分钟前
在CentOS7.9服务器上安装.NET 8.0 SDK
运维·服务器·开发语言·c++·c#·云计算·.net
李长渊哦31 分钟前
深入理解Java中的Map.Entry接口
java·开发语言
koooo~40 分钟前
JavaScript中的Window对象
开发语言·javascript·ecmascript
tju新生代魔迷1 小时前
C++:list
开发语言·c++
夜月蓝汐1 小时前
JAVA中的Collection集合及ArrayList,LinkedLIst,HashSet,TreeSet和其它实现类的常用方法
java·开发语言
肥or胖1 小时前
【FFmpeg 快速入门】本地播放器 项目
开发语言·qt·ffmpeg·音视频
inwith2 小时前
C#语法基础总结(超级全面)(二)
开发语言·c#
_pengliang2 小时前
小程序按住说话
开发语言·javascript·小程序
秋千码途2 小时前
小架构step系列17:getter-setter-toString
java·开发语言·架构
AI 嗯啦3 小时前
python基础语法9,用os库实现系统操作并用sys库实现文件操作(简单易上手的python语法教学)
开发语言·python