作者说明 · 学习记录
本站作为作者的学习记录站,不保证文章内容严谨或完全正确。
版权信息

:::warning

本文章为博主原创文章。遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

:::


Shell 脚本不仅可以批量处理命令任务,还拥有完整的流程控制语法结构,包括条件判断、循环与分支等逻辑控制结构。本文将简明介绍 Shell 的基本流程控制语法,适用于 bash 环境。

1. 条件判断语句 if/else

1.1. 基本语法:

1
2
3
4
5
6
7
if [ 条件 ]; then
命令1
elif [ 条件 ]; then
命令2
else
命令3
fi

写成一行:

1
if [ ]; then ; fi

1.2. 示例:

1
2
3
4
5
6
7
8
read -p "请输入一个数字: " num
if [ "$num" -gt 0 ]; then
echo "正数"
elif [ "$num" -lt 0 ]; then
echo "负数"
else
echo "零"
fi

2. 判断符号说明

条件表达式 含义
-eq 等于(整数)
-ne 不等于
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
-z str 字符串是否为空
-n str 字符串是否非空
str1 = str2 字符串相等
-f file 是否为普通文件
-d dir 是否为目录

注意:[] 要有空格;变量最好加引号防止空值。

3. case 分支结构

用于多个条件的匹配处理。

3.1. 语法:

1
2
3
4
5
6
7
8
case $变量 in
模式1)
命令 ;;
模式2)
命令 ;;
*)
默认命令 ;;
esac

3.2. 示例:

1
2
3
4
5
6
7
read -p "请输入选项[a/b/c]: " choice
case $choice in
a) echo "你选择了A" ;;
b) echo "你选择了B" ;;
c) echo "你选择了C" ;;
*) echo "无效选项" ;;
esac

4. for 循环

4.1. 遍历列表:

1
2
3
for var in 值1 值2 值3; do
命令
done
1
2
3
for name in Alice Bob Charlie; do
echo "Hello, $name"
done

4.2. 使用 C 风格语法:

1
2
3
for ((i=1; i<=5; i++)); do
echo "第 $i 次"
done

5. while 循环

5.1. 基本语法:

1
2
3
while [ 条件 ]; do
命令
done

5.2. 示例:

1
2
3
4
5
i=1
while [ $i -le 5 ]; do
echo "循环第 $i 次"
((i++))
done

6. until 循环

while 相反:条件为假时执行

1
2
3
4
5
i=1
until [ $i -gt 5 ]; do
echo "第 $i 次"
((i++))
done

7. 跳出循环:break 和 continue

1
2
3
4
5
6
for ((i=1;i<=10;i++)); do
if [ $i -eq 5 ]; then
break # 提前结束循环
fi
echo $i
done
1
2
3
4
5
6
for ((i=1;i<=5;i++)); do
if [ $i -eq 3 ]; then
continue # 跳过当前循环
fi
echo $i
done

Shell脚本流程控制简明指南

创建时间:6月 18, 2025

最后更新:6月 18, 2025

字数统计:651字

预计阅读:2min

文章分类: -Linux -Shell