Linux教程-Shell编程系列二
文章目录
- 核心控制结构概述
- 为什么要学习控制结构?☕
- 一、条件判断(if语句)
- 二、分支选择(case语句)
- 三、循环结构
- 四、函数中的控制结构
- 五、注意事项
 
 
Shell编程中的控制结构是脚本逻辑实现的核心工具,它们决定了程序的执行流程和自动化任务的效率。控制结构主要包括条件判断、循环执行和分支选择三类,能够根据不同的条件或输入动态调整脚本行为。
核心控制结构概述
-  条件判断(if语句) - 通过逻辑测试(如文件存在性、数值比较)决定执行路径,支持单分支(if-then)、双分支(if-then-else)和多路分支(if-elif-else)。
- 示例:根据用户输入判断成绩等级或文件状态。
 
- 通过逻辑测试(如文件存在性、数值比较)决定执行路径,支持单分支(
-  分支选择(case语句) - 对同一变量进行多模式匹配,比if-elif更简洁,适合处理菜单选项或错误码分类。
- 示例:根据命令行参数调用不同功能模块。
 
- 对同一变量进行多模式匹配,比
-  循环结构(for/while/until) - for循环:遍历列表或文件集合,批量处理数据。
- while/until循环:基于条件重复执行,前者条件为真时循环,后者条件为假时循环。
- 示例:监控进程状态直到满足条件,或批量重命名文件。
 
-  流程控制工具 - break和- continue:分别用于跳出循环或跳过当前迭代。
- 函数嵌套:将控制结构封装为函数,提升代码复用性。
 
为什么要学习控制结构?☕
- 自动化效率:通过条件与循环组合,可替代人工重复操作(如日志分析、备份)。
- 灵活响应:动态适应不同输入或系统状态(如错误处理、资源监控)。
掌握这些结构是编写高效Shell脚本的基础,后续我们将通过实例深入每种结构的语法与应用场景。
Shell编程中的控制结构语句是实现脚本逻辑的核心,主要包括条件判断、循环结构和分支选择。以下是详细分类及示例:
一、条件判断(if语句)
-  单分支if 
 语法:if [ condition ]; thencommands fi示例:检查文件是否存在: if [ -f "file.txt" ]; thenecho "文件存在" fi
-  双分支if-else 
 语法:if [ condition ]; thencommands1 elsecommands2 fi示例:判断数值大小: if [ $num -gt 10 ]; thenecho "大于10" elseecho "小于等于10" fi
-  多分支if-elif-else 
 语法:if [ condition1 ]; thencommands1 elif [ condition2 ]; thencommands2 elsecommands3 fi示例:成绩分级: if [ $score -ge 90 ]; thenecho "优秀" elif [ $score -ge 60 ]; thenecho "及格" elseecho "不及格" fi
-  测试条件 - 数值比较:-eq(等于)、-ne(不等于)、-lt(小于)。
- 字符串比较:=(相等)、!=(不等)。
- 文件测试:-f(文件存在)、-d(目录存在)。
 
- 数值比较:
二、分支选择(case语句)
用于多条件匹配,比if-elif更简洁:
 语法:
case $variable inpattern1)commands1 ;;pattern2)commands2 ;;*)default_commands ;;
esac
示例:根据输入执行操作:
read -p "输入选项(1/2/3): " choice
case $choice in1) echo "执行操作1" ;;2) echo "执行操作2" ;;3) echo "执行操作3" ;;*) echo "无效输入" ;;
esac
注意:
- 模式支持通配符(如*.txt)。
- 每个分支以;;结束。
三、循环结构
-  for循环 - 遍历列表:for item in apple banana cherry; doecho "水果: $item" done
- C语言风格:for ((i=1; i<=5; i++)); doecho "数字: $i" done
 
- 遍历列表:
-  while循环 
 条件为真时执行:count=1 while [ $count -le 5 ]; doecho "计数: $count"((count++)) done
-  until循环 
 条件为假时执行(与while相反):count=1 until [ $count -gt 5 ]; doecho "计数: $count"((count++)) done
-  循环控制 - break:跳出循环。
- continue:跳过本次循环。
 
四、函数中的控制结构
函数内可嵌套控制语句:
check_even() {if [ $(($1 % 2)) -eq 0 ]; thenecho "偶数"elseecho "奇数"fi
}
check_even 4  # 输出"偶数"
五、注意事项
- 空格要求:[ ]内条件与括号需有空格(如[ $a -eq 10 ])。
- 字符串与数值:比较时区分运算符(如字符串用=,数值用-eq)。
- 逻辑组合:使用-a(AND)、-o(OR)或&&、||。
通过灵活组合这些结构,可高效实现自动化任务,如文件处理、系统监控等。
