linux shell 编程:if、elif、else、then语句 作者:马育民 • 2025-11-14 11:38 • 阅读:10002 # 概述 在之前学习的程序,都是 **顺序执行**,根据编写的顺序,从上到下运行,如下: ``` echo "hello world" echo "呵呵" echo "哈哈" ``` ### 提出问题 输入分数,如果分数大于90,打印优;大于80,打印良;大于70,打印中;大于60,打印差,小于60,打印不及格 这种问题,上面的语句将无法实现 # 条件语句(判断语句、if语句) ### 格式 ``` if [关系表达式] then 代码块 fi ``` **执行流程:** - 首先执行关系表达式,看其结果是 `true` 还是 `false` - 如果是 `true` 就执行语句体 - 如果是 `false` 就不执行语句体 [](https://www.malaoshi.top/upload/0/0/1EF4r6PspVmA.jpg) ### 例子 ``` if [ 5 -gt 2 ] then echo "5>2成立" fi ``` 执行结果: ``` 5>2成立 ``` # if...else 语句 ### 格式 ``` if[关系表达式] then 语句体1 else 语句体2; fi ``` **执行流程:** - 首先判断关系表达式看其结果是true还是false - 如果是true就执行语句体1 - 如果是false就执行语句体2 [](https://www.malaoshi.top/upload/0/0/1EF4r6SkV44E.jpg) ### 例子 ``` if [ 5 -lt 2 ] then echo "5<2成立" else echo "5<2不成立" fi ``` 执行结果: ``` 5<2不成立 ``` # if..else if...else 语句 ### 格式 ``` if [判断条件1] then 执行语句1; elif [判断条件2] then 执行语句2; else 执行语句n+1; fi ``` - 首先判断关系表达式1看其结果是true还是false - 如果是true就执行语句体1 - 如果是false就继续判断关系表达式2看其结果是true还是false - 如果是true就执行语句体2 - 如果是false就继续判断关系表达式...看其结果是true还是false - ... - 如果没有任何关系表达式为true,就执行语句体n+1。 [](https://www.malaoshi.top/upload/0/0/1EF4r6V1u1WH.jpg) ### 例子 根据分数打印优良中差不及格: ``` fenshu=55 if [ $fenshu -ge 90 ] then echo 优 elif [ $fenshu -ge 80 ] then echo 良 elif [ $fenshu -ge 70 ] then echo 中 elif [ $fenshu -ge 60 ] then echo 差 else echo 不及格 fi ``` 原文出处:http://www.malaoshi.top/show_1GW2DzQ16wxh.html