shell@流程控制
在 Shell 脚本中,流程控制是编写复杂脚本的核心部分,用于控制程序的执行流程。常见的流程控制结构包括条件语句、循环语句和分支语句。
1. 条件语句
条件语句用于根据条件执行不同的代码块。
(1) if 语句
基本语法:
1 | # if |
示例:
1 |
|
[ 条件 ]是测试条件,常见比较运算符:- 数值:
-eq(等于)、-ne(不等于)、-gt(大于)、-lt(小于)、-ge(大于等于)、-le(小于等于) - 字符串:
=(等于)、!=(不等于)、-z(空字符串)、-n(非空字符串) - 文件:
-f(文件存在且是普通文件)、-d(目录存在)、-e(文件存在)
- 数值:
(2) case 语句
用于多分支选择,类似其他语言中的 switch。
基本语法:
1 | case 变量 in |
示例:
1 |
|
2. 循环语句
循环用于重复执行代码块。
(1) for 循环
遍历列表或范围。
基本语法:
1 | for 变量 in 列表; do |
示例:
1 |
|
- 也可以用 C 风格的语法:
1 | for ((i=1; i<=5; i++)); do |
(2) while 循环
当条件为真时持续执行。
基本语法:
1 | while [ 条件 ]; do |
示例:
1 |
|
(3) until 循环
当条件为假时持续执行(与 while 相反)。
基本语法:
1 | until [ 条件 ]; do |
示例:
1 |
|
3. 流程控制关键字
break:跳出当前循环。continue:跳过本次循环,继续下一次迭代。
示例:
1 |
|
输出:
数字: 1
数字: 2
数字: 4
4. 条件测试
Shell 中条件测试通常使用 [ ] 或 [[ ]](后者更强大,支持正则表达式等)。
- 示例:
1 |
|
注意事项
- 空格:
[ ]中的条件两侧必须有空格,例如[ $a -eq $b ],而不是[$a -eq $b]。 - 变量引用:建议用
${变量}或$变量,避免未定义变量导致的错误。 - 调试:可以用
bash -x 脚本.sh查看脚本执行过程。