3.1 循环与数组基础

3.1 循环与数组基础

一、循环概述

循环是 Shell 自动化脚本的核心,用于批量执行重复任务,例如:

  • 批量 SSH
  • 批量文件传输
  • 批量软件安装
  • 批量设备检测
  • 批量日志处理

Shell 常见循环:

  • for
  • while
  • until

二、for 循环

for 是 Shell 中最常用的循环结构,适用于遍历列表、数字、文件或参数。

基本语法

1
2
3
4
for var in data
do
command
done

示例

1
2
3
4
for name in aaa bbb ccc
do
echo "$name"
done

三、数字循环

使用 seq

1
2
3
4
for i in $(seq 1 5)
do
echo "$i"
done

输出:

1
2
3
4
5
1
2
3
4
5

C 风格循环

更适合计数场景。

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

这种写法在运维脚本和自动化工具中较常见。


四、while 循环

while 在条件成立时持续执行。

基本语法

1
2
3
4
while condition
do
command
done

示例

1
2
3
4
5
6
7
8
i=1

while [ "$i" -le 5 ]
do
echo "$i"

((i++))
done

五、until 循环

untilwhile 相反,条件不成立时循环。

1
2
3
4
5
6
7
8
i=1

until [ "$i" -gt 5 ]
do
echo "$i"

((i++))
done

实际生产环境中 while 使用频率更高。


六、Shell 算术运算

Shell 中不能直接进行:

1
i=i+1

正确方式:

1
i=$((i+1))

或:

1
((i++))

示例

1
2
3
4
5
count=1

count=$((count+5))

echo "$count"

七、break 与 continue

break

终止整个循环。

1
2
3
4
5
6
7
8
9
for i in $(seq 10)
do
if [ "$i" -eq 5 ]
then
break
fi

echo "$i"
done

continue

跳过当前循环。

1
2
3
4
5
6
7
8
9
for i in $(seq 5)
do
if [ "$i" -eq 3 ]
then
continue
fi

echo "$i"
done

八、遍历脚本参数

Shell 支持通过 $@ 获取全部参数。

示例

1
2
3
4
for arg in "$@"
do
echo "$arg"
done

执行:

1
bash test.sh aaa bbb ccc

输出:

1
2
3
aaa
bbb
ccc

这种方式常用于批量文件处理和自动化部署。


九、数组

Bash 支持一维数组。

定义数组

1
arr=(aaa bbb ccc)

获取数组元素

1
echo "${arr[0]}"

数组下标从 0 开始。


获取数组长度

1
echo "${#arr[@]}"

遍历数组

1
2
3
4
5
6
arr=(linux shell nginx mysql)

for item in "${arr[@]}"
do
echo "$item"
done

十、循环读取文件

运维中经常需要逐行读取 IP、域名或配置文件。

示例

1
2
3
4
while read -r line
do
echo "$line"
done < ip.txt

文件内容:

1
2
3
192.168.1.1
192.168.1.2
192.168.1.3

十一、批量自动化示例

批量检测 IP

1
2
3
4
for ip in 192.168.1.1 192.168.1.2 192.168.1.3
do
ping -c 1 "$ip"
done

批量 SSH

1
2
3
4
5
6
7
8
9
devices=(
192.168.1.10
192.168.1.11
)

for ip in "${devices[@]}"
do
ssh root@"$ip" "hostname"
done

批量安装软件

1
2
3
4
5
6
for ip in "${devices[@]}"
do
scp app.deb root@"$ip":/tmp/

ssh root@"$ip" "dpkg -i /tmp/app.deb"
done

这种模式广泛用于 Linux 运维与设备管理。


十二、死循环

死循环会无限执行,通常用于监控或守护进程。

示例

1
2
3
4
5
6
while true
do
date

sleep 1
done

停止方式:

1
Ctrl + C

建议在死循环中加入 sleep,避免 CPU 占用过高。


十三、总结

循环与数组是 Bash 自动化脚本的重要基础,核心内容包括:

  • for、while、until 循环
  • Shell 算术运算
  • break 与 continue
  • 参数遍历
  • Bash 数组
  • 文件批量处理
  • 批量 SSH 与自动化部署

掌握循环后,即可编写真正具备批量处理能力的 Linux 运维脚本。


3.1 循环与数组基础
https://blog.sh462li.top/2026/06/03/Shell_learn/3.1 循环与数组基础/
作者
SHAO
发布于
2026年6月3日
许可协议