1. for 循环
for 循环用于重复性执行某段代码,避免死循环,核心需包含循环初始值、循环条件、修改循环条件,有两种主要使用方式。
1.1 方式一:数值处理(固定循环逻辑)
-
语法格式:
for ((循环初始值; 循环条件; 修改循环条件))
do
循环体代码(重复执行的内容)
done -
参数说明 :
- 循环初始值:设定循环开始的初始数值,如
i=1
。 - 循环条件:控制循环是否继续,如
i<=5
(i 小于等于 5 时循环继续)。 - 修改循环条件:每次循环后调整初始值,如
i++
(i 每次加 1)。
- 循环初始值:设定循环开始的初始数值,如
-
简化写法 :
for ((i = 0; i <= 5; i++)); do echo "$i"; done
(一行写完,无需换行)。 -
案例:
打印 5 次 HelloWorld:
#!/bin/bash
for ((i=0;i<5;i++))
do
echo "$i - Hello World~"
done


求 10 以内数值的累加和:
#!/bin/bash
count=0 # 存储累加结果
for((i=1;i<=10;i++))
do
count=$(($count+$i)) # 每次循环累加i的值
done
echo "累加后的值:${count}" # 输出结果为55
1.2 方式二:遍历数据集(依次取数据)
-
语法格式:
for 变量名 in 数据1 数据2 数据3 ...
do
程序段(对每个数据执行的操作)
echo $变量名 # 可输出当前遍历的数据
done -
简化写法 :
for N in 1 2 3; do echo $N; done
(遍历指定数字)。for N in {1..3}; do echo $N; done
(遍历 1 到 3 的连续数字)。
-
案例:
遍历动物名称并输出:
#!/bin/bash
for animal in cat dog elephant
do
echo ${animal} # 依次输出cat、dog、elephant
done
打印指定目录下所有文件名:
#!/bin/bash
# 查询/root/shelldemo目录下所有文件名,赋值给filelist变量
filelist=$(ls /root/shelldemo)
# 循环遍历filelist,输出每个文件名
for filename in $filelist
do
echo $filename
done
批量检测 IP 地址的连通性


九九乘法表

随机生成密码

小结
- 方式一适用于从指定起始值到上限值的循环,需明确初始值、条件和步长。
- 方式二适用于从数据集(如多个数据、数组)中依次取数据执行操作,直至数据取完。
2. while 循环
while 循环通过判断条件是否成立来控制循环执行,条件为 true 时继续循环,false 时结束,有三种常见使用方式。
2.1 方式一:基于表达式条件循环
-
语法格式:
while [ 表达式 ]
do
command(循环体代码)
修改循环条件(避免死循环)
done -
案例:输入 yes/YES 停止循环:
#!/bin/bash
当输入不是yes且不是YES时,持续提示输入
while [ "y" != "yes" -a "y" != "YES" ]
do
echo "请输入yes/YES停止循环:"
read y # 接收键盘输入的值
done
echo "循环停止了!"
2.2 方式二:基于数值条件循环(用 (()))
-
语法格式:
变量=初始值
while((循环条件))
do
程序段
let 变量修改 # 或((变量++)),let无需$表示变量
done -
说明 :
let
是 Bash 中用于计算的工具,支持自加(let no++
)、自减(let no--
)。 -
案例:计算 10 以内数值的累加和:
#!/bin/bash
count=0 # 记录累加结果
num=1 # 循环初始值
while((num<=10))
do
count=[count+num] # 累加计算 let num++ # num每次加1,修改循环条件 done echo "10以内数值的累加和:{count}" # 输出结果为55
数值循环输出
2.3 方式三:无限循环(死循环,需手动控制退出)
-
语法格式:
while true
do
command(循环体代码)
# 需在循环内添加退出条件,如if判断+exit
done -
案例:输入 yes 退出无限循环:
#!/bin/bash
while true
do
echo "请输入字符串:"
read y
if [ "$y" == "yes" ]; then
exit 0 # 输入yes时退出循环
fi
done
3. case 语句
case 语句用于多条件匹配,根据变量的不同值执行对应的程序段,类似 "多选一" 逻辑,需以esac
结束。
语法格式
case $变量名称 in
匹配模式1 )
程序段1(变量匹配模式1时执行)
;; # 模式1执行完毕,跳出case
匹配模式2 )
程序段2(变量匹配模式2时执行)
;;
* ) # 默认模式,变量不匹配任何上述模式时执行
默认程序段
;;
esac # case语句结束标记
案例:根据输入参数执行不同操作
#!/bin/bash
# 根据传递的参数$1匹配不同模式
case $1 in
"hello")
echo "Hello World!"
;;
"test")
echo "testting..."
;;
"") # 无参数时匹配
echo "$0 没有参数" # $0表示当前脚本名称
;;
*) # 其他未匹配参数
echo "默认"
;;
esac
- 执行结果 :
- 输入
sh casedemo.sh test
,输出 "testting..."。 - 输入
sh casedemo.sh hello
,输出 "Hello World!"。 - 直接输入
sh casedemo.sh
(无参数),输出 "casedemo.sh 没有参数"。 - 输入
sh casedemo.sh other
(其他参数),输出 "默认"。
- 输入
管理 httpd 服务(如 Apache 网页服务)的启动、停止、重启和状态查询
4. 总结
- for 循环:用于重复执行代码,分两种方式。一是数值处理,需明确循环初始值、条件和修改逻辑(如遍历 1-10);二是遍历数据集,依次取指定数据或目录文件(如遍历动物名、打印文件名)。
- while 循环 :依条件控制循环,共三种方式。基于表达式条件循环(如输入特定值停止)、基于数值条件循环(用
(( ))
和let
处理数值,如累加计算)、无限循环(需手动加退出条件,如输入 yes 退出)。 - case 语句 :实现多条件匹配,按变量值执行对应程序段,有匹配模式和默认模式,以
esac
结束(如根据输入参数输出不同内容)。