shell菜鸟教程流程控制和test命令笔记

流程控制

以下是Linux Shell流程控制结构的纯文本介绍,不包含代码示例:

一、条件判断(if语句)

​单分支if​

当条件成立时执行操作,语法以if开始、fi结束,条件写在[]或[[]]中。

​双分支if-else​

扩展单分支结构,条件成立执行代码块1,否则执行代码块2,通过else衔接两个分支。

​多分支if-elif-else​

支持多个条件判断,依次检查if和elif条件,所有条件均不满足时执行else块。

二、循环结构

​for循环​

​列表遍历​:逐个处理空格分隔的列表项(如文件、字符串)

​数字范围​:通过{start...end}或seq生成序列

​类C风格​:使用(( ))实现计数器控制的循环

​while循环​

条件为真时重复执行,适用于未知迭代次数的场景(如监控、文件逐行读取)。注意需在循环体内更新条件变量避免死循环。

​until循环​

与while逻辑相反,条件为假时持续执行,直到条件变为真。

三、流程控制特性

​条件测试类型​

数值比较:-eq(等于)、-gt(大于)等

字符串比较:=(相等)、-z(空串)等

文件测试:-e(存在)、-d(目录)等

​循环控制关键字​

break:立即终止循环

continue:跳过当前迭代进入下一次循环

​逻辑运算符​

&&(与)、||(或)、!(非)可用于组合多个条件。

四、适用场景对比

​if/else​:条件分支处理(如服务状态检查、参数验证)

​for​:已知迭代次数的批量操作(如文件重命名、数据遍历)

​while​:持续监控或动态条件循环(如日志实时分析)

test命令

test 命令是 Shell 内置的条件判断工具,用于评估表达式并返回布尔值(真/假),它通常与 if 语句结合使用,是 Shell 脚本中实现逻辑控制的基础。

Shell 中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

语法格式

复制代码
test EXPRESSION
# 或
[ EXPRESSION ]  # 注意方括号内必须有空格