shell 循环的定义

        在shell脚本编程中,循环是一种重复执行一组操作的结构。它可以帮助我们简化重复性任务的编写和执行,如果没有预期结果,不间断执行,我们通常称之为“死循环” ,与循环有关的三个专业名词:遍历,迭代,递归

  • 遍历 : 按规则访问非线性结构中的每一项。
  • 迭代 : 按顺序访问线性结构中的每一项。
  • 递归 : 在函数内调用自身, 将复杂情况逐步转化成基本情况。

Shell脚本编程中有两种常见的循环结构:for循环和while循环。

1.for循环:

for循环是一种在给定的条件下,重复执行一组命令的结构。

for循环的语法如下:

for 变量 in 取值列表
do
    命令
done

-----------------------------

for((i=1;i<=循环的次数;i++)) 

do

        命令序列

done

其中,变量是用来存储列表中的元素的,列表是一组元素,可以是数字、字符串或文件名等。

例1:使用for循环打印9 9乘法表

#! /bin/bash
for((i=1;i<=9;i++))
do
    for((j=1;j<=i;j++))
    do
        echo -n "$j * $i = $(($j*$i))  "
    done
    echo ""
done

运行图 

例2:打印一份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脚本编程中循环的定义和使用方法。使用循环可以帮助我们更有效地执行重复性任务,并简化代码的编写和维护。

  • 25
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值