在Linux系统中,Shell脚本是实现任务自动化的强大工具。而循环结构则是编写高效、简洁脚本的核心要素之一。无论你是刚接触Linux的新手,还是希望提升脚本编写能力的用户,掌握Linux Shell循环都将让你事半功倍。
什么是Shell循环?
Shell循环允许你重复执行一段命令,直到满足特定条件为止。常见的循环类型包括 for 循环和 while 循环。它们广泛应用于文件批量处理、日志分析、定时任务等场景,是实现Shell脚本自动化的关键技术。
1. for 循环:遍历列表或范围
for 循环适用于已知循环次数或需要遍历一组值的情况。
基本语法:
for 变量 in 列表do 命令1 命令2 ...done
示例1:打印数字1到5
#!/bin/bashfor i in {1..5}do echo "当前数字: $i"done 运行结果:
当前数字: 1当前数字: 2当前数字: 3当前数字: 4当前数字: 5
示例2:批量重命名文件
#!/bin/bashfor file in *.txtdo mv "$file" "backup_$file"done
这个脚本会将当前目录下所有 .txt 文件重命名为 backup_原文件名.txt,非常适合日常备份操作。
2. while 循环:条件为真时持续执行
while 循环在条件为真(true)时不断执行,适合不确定循环次数但依赖某个状态变化的场景。
基本语法:
while [ 条件 ]do 命令done
示例:倒计时脚本
#!/bin/bashcount=5while [ $count -gt 0 ]do echo "倒计时: $count" sleep 1 ((count--))doneecho "时间到!"
该脚本会每秒输出一次倒计时,直到归零。你可以用它来模拟等待、监控服务状态等。
3. 实战:自动化日志清理脚本
结合 for 和 while,我们可以编写一个实用的自动化脚本。例如,每天删除7天前的日志文件:
#!/bin/bashLOG_DIR="/var/log/myapp"DAYS_OLD=7# 使用 find 命令查找并删除旧日志find "$LOG_DIR" -name "*.log" -mtime +$DAYS_OLD -delete# 或者用 for 循环逐个处理(更安全)for logfile in $(find "$LOG_DIR" -name "*.log" -mtime +$DAYS_OLD)do echo "正在删除: $logfile" rm -f "$logfile"done
将此脚本加入 cron 定时任务,即可实现全自动日志管理,极大提升运维效率。
小贴士:避免常见错误
- 确保变量使用双引号包裹(如
"$file"),防止文件名含空格时报错。 - 在
while循环中务必更新条件变量,否则可能陷入无限循环。 - 使用
set -e可让脚本在出错时立即退出,提高健壮性。
结语
通过本文,你已经掌握了 for循环while循环 的基本用法,并能编写简单的自动化脚本来提升工作效率。无论是批量处理文件、监控系统状态,还是定时清理数据,bash脚本教程中的这些技巧都能派上用场。现在就打开终端,动手试试吧!
提示:所有示例脚本请保存为 .sh 文件,并使用 chmod +x 脚本名.sh 赋予执行权限后再运行。

