在shell脚本编程中,循环是一种重复执行一组操作的结构。它可以帮助我们简化重复性任务的编写和执行,如果没有预期结果,不间断执行,我们通常称之为“死循环” ,与循环有关的三个专业名词:遍历,迭代,递归
- 遍历 : 按规则访问非线性结构中的每一项。
- 迭代 : 按顺序访问线性结构中的每一项。
- 递归 : 在函数内调用自身, 将复杂情况逐步转化成基本情况。
Shell脚本编程中有两种常见的循环结构:for循环和while循环。
1.for循环:
for循环是一种在给定的条件下,重复执行一组命令的结构。
for循环的语法如下:
for 变量 in 取值列表
do
命令
done-----------------------------
for((i=1;i<=循环的次数;i++))
do
命令序列
done
其中,变量是用来存储列表中的元素的,列表是一组元素,可以是数字、字符串或文件名等。
例:打印一份0-10以内的偶数列表
#如果需要求奇数就把0改为1即可
for i in {0..10..2} #从0开始加2取值,一直到10结束
do
echo $i
done
运行图
读取文件作为循环内容
for 变量 in $( cat 文件的绝对路径 )
do
id 用户名
if [ $? -eq 0 ]
执行语句
done
多线程运用
Linux系统是由C语言编写的,它具有许多C语言的特性。默认情况下,Linux系统是单线程执行语句命令的。然而,当遇到重复量较大的循环语句时,执行时间会变得很长。为了加快执行速度,我们可以使用多线程来同时执行这些循环语句(多线程的速度取决于硬件CPU的性能)。通过这种方式,我们可以快速获得想要的结果。所以,我们可以通过调动多线程来实现更高效的程序执行。
语法:
for 变量名 in 取值列表
do
{
循环语句
}&
done
wait
例:
#! /bin/bash
# 假设取值列表为a、b、c、d、e
for num in a b c d e
do
{
# 并行执行的循环语句
echo "当前变量名: $num"
sleep 1
echo "结束变量名: $num"
}&
done# 等待所有并行执行的任务结束
wait
在上述示例中,我们使用了一个循环语句来遍历取值列表中的元素。在每个迭代中,我们创建一个子进程来执行循环体中的命令。循环体内部打印当前的变量名,并随后暂停1秒钟,然后再打印结束的变量名。通过在循环体末尾添加一个&
符号,我们将每个子进程设置为在后台并行执行。
最后,我们使用wait
命令来等待所有并行执行的子进程结束。
2.while循环:
while循环是一种在给定条件为真时,重复执行一组命令的结构。
while循环的语法如下:
while 条件
do
命令
done
其中,条件是一个表达式或命令,如果条件为真,则循环体内的命令会被执行。
例如,以下是一个简单的while循环示例,用于打印数字1到5:
i=1
while [ $i -le 5 ]
do
echo $i
i=$((i+1))
done
运行图:
这就是shell脚本编程中循环的定义和使用方法。使用循环可以帮助我们更有效地执行重复性任务,并简化代码的编写和维护。