前言

在编写 Shell 脚本时,流程控制是核心逻辑。本文将基于课件知识点,结合 Xshell 实际操作,详细总结 Bash 中的结构化命令,包括基础的 if-then-else、嵌套结构、test 命令以及高级的双方括号 `` 和双括号 (( )) 用法,并建立个人的知识框架体系。


一、 知识点小结与概念理解

1. 基础条件判断语句

  • if-then 语句:最基本的结构化命令。如果 if 后面的命令退出状态码为 0(成功),则执行 then 后面的命令。
  • if-then-else 语句:提供二选一的路径。如果条件不成立,执行 else 部分的代码。
  • elif (else if):用于连接多个判断条件,避免过多的嵌套,使逻辑更清晰。

2. 条件测试方法

为了让 if 语句能够判断数值大小、字符串内容或文件状态,我们需要使用测试工具:

  • test 命令:最原始的测试命令,用于评估条件表达式。
  • 方括号 [ ]test 命令的同义词,但在书写时必须在括号内侧保留空格
  • 双方括号 ``:Bash 的特有特性,支持正则表达式匹配等高级字符串操作。
  • 双括号 (( )):专门用于数学运算和整数比较,支持 C 语言风格的语法(如 >, <, ++)。

二、 知识框架体系与命令详解

以下是我整理的 Shell 条件判断知识框架:

命令/结构用途主要参数/用法示例备注
if-then-else基础流程控制if [ condition ]; then ... else ... fi注意 fi 结尾
test / [ ]通用测试(数值/字符串/文件)-eq(等于), -gt(大于)
-z(空串), -f(文件存在)
兼容性最好,POSIX 标准
****高级字符串测试==(模式匹配), =~(正则)
&&, || (逻辑与/或)
Bash 特有,防止单词拆分错误
(( ))整数算术运算>, <, >=, <=
a++, a+b
仅用于整数,无需 $ 引用变量

常用参数速查表

  • 数值比较-eq (等于), -ne (不等于), -gt (大于), -lt (小于), -ge (大于等于), -le (小于等于)。
  • 字符串比较= (相等), != (不相等), < (小于), > (大于), -n (长度非0), -z (长度为0)。
  • 文件测试-e (存在), -f (是文件), -d (是目录), -r (可读), -w (可写), -x (可执行)。

三、 Xshell 实战演练与脚本编写

以下脚本涵盖了作业要求的:if-then-else、嵌套 iftest 命令、复合条件、双括号与双方括号。

1. 基础练习:test 命令与 if-then-else

场景:检查当前用户是否为 root,并检查某个文件是否存在。

Xshell 操作步骤:

  1. vim basic_check.sh 粘贴上述代码。
  2. chmod +x basic_check.sh
  3. ./basic_check.s


2. 进阶练习:嵌套 if 与 elif

场景:根据输入的分数判断等级(优秀、及格、不及格)。这里展示了 if 中嵌套 if 的逻辑


3. 高级练习:复合条件、双方括号与双括号

场景

  1. 使用 && 进行复合条件判断。
  2. 使用 (( )) 进行数学大小比较。
  3. 使用 `` 进行字符串通配符匹配。


四、 总结

通过本次实操,我掌握了以下几点核心技能:

  1. 语法规范:在使用 [ ] 时,必须注意内侧的空格,否则脚本报错。
  2. 工具选择:简单的数值比较用 [ ](( ));涉及复杂的字符串模式匹配(如正则)时,优先使用 ``。
  3. 逻辑构建:通过嵌套 ifelif 可以处理复杂的多分支业务逻辑。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐