0

0

LinuxShell循环语句如何用_forwhile实战示例【教程】

舞姬之光

舞姬之光

发布时间:2025-12-20 08:51:07

|

928人浏览过

|

来源于php中文网

原创

for适合遍历已知集合,while适合条件驱动的不确定循环;for常用于列表、文件、数字范围,while用于读取输入、轮询或状态检测;二者可嵌套组合,需注意引号、IFS、子shell等避坑细节。

linuxshell循环语句如何用_forwhile实战示例【教程】

Linux Shell 中的 forwhile 是最常用的循环结构,掌握它们能大幅提升自动化脚本编写效率。关键在于理解适用场景:for 适合已知范围或列表遍历,while 更适合条件驱动、不确定次数的重复操作。

for 循环:遍历固定集合或数字范围

for 循环语法简洁,常用于处理数组、文件名、命令输出或数字序列。

  • 遍历字符串列表
    for name in Alice Bob Charlie; do echo "Hello $name"; done
  • 遍历当前目录所有 .sh 文件
    for file in *.sh; do [[ -f "$file" ]] && echo "Found script: $file"; done
    注意加 [[ -f "$file" ]] 防止通配符无匹配时原样输出 *.sh
  • 数字范围(用 seq 或 brace expansion)
    for i in {1..5}; do echo "Step $i"; done
    或兼容性更强写法:for i in $(seq 1 2 10); do echo "Odd: $i"; done(1 到 10 的奇数)

while 循环:按条件持续执行,适合读取输入或轮询

while 在每次迭代前判断条件,只要返回 true 就继续,适合处理动态数据流或等待状态变化。

ChartGen
ChartGen

AI快速生成专业数据图表

下载
  • 逐行读取文件内容
    while IFS= read -r line; do echo "Line: $line"; done
    IFS= 保留行首尾空格,-r 防止反斜杠转义,这是安全读取的标准写法。
  • 等待某个进程启动(轮询检查)
    while ! pgrep nginx > /dev/null; do echo "Waiting for nginx..."; sleep 2; done
    每 2 秒检查一次 nginx 进程是否存在,存在则退出循环。
  • 从命令输出中读取(配合管道需用 while read)
    ps aux | awk '$3 > 1.0 {print $11}' | while read cmd; do echo "High CPU: $cmd"; done
    注意:管道中的 while 会运行在子 shell,变量修改无法回传到外层;如需全局变量,改用重定向或 process substitution。

for 和 while 的实用组合技巧

单一循环不够用时,嵌套或混合使用可解决复杂逻辑。

  • for 遍历主机,while 检查端口连通性
    for host in web1 db2 cache3; do echo "Testing $host"; while ! nc -z $host 22 -w 2; do echo "Still down..."; sleep 1; done; echo "$host OK"; done
  • 用 while 控制 for 的执行次数(带计数器)
    count=0; while [ $count -lt 3 ]; do for item in a b c; do echo "$item-$count"; done; ((count++)); done

避坑提醒:常见错误与修复

初学者容易忽略这些细节,导致脚本行为异常。

  • for 中未引号包裹变量:如 for f in $files → 应为 for f in $files(若 files 是字符串)或更稳妥用数组 files=("a b" "c d"); for f in "${files[@]}"; do ...
  • while read 遇到空行或特殊字符中断:始终加 IFS= read -r
  • 忘记给 while 条件提供更新逻辑,造成死循环,例如 while [ $n -eq 5 ]; do echo $n; done 缺少 ((n++))
  • 在管道中修改变量后失效:用 while ...; do ...; done 替代 command | while ... 可保持变量作用域

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

229

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

497

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

498

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

227

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

333

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3508

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

14

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

17

2026.01.13

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

8

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.2万人学习

Git 教程
Git 教程

共21课时 | 2.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号