shell中for while until 三种循环的用法

本文涉及的产品
应用实时监控服务-用户体验监控,每月100OCU免费额度
云原生网关 MSE Higress,422元/月
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: shell编程中,有几种常见的循环结构,包括for循环、while循环和until循环,总的来说,循环shell编程中扮演着至关重要的角色,它们使得自动化任务变得更加容易,提高了效率,并且可以处理各种各样的编程需求。

————前言————

shell编程中,有几种常见的循环结构,包括for循环、while循环和until循环,总的来说,循环shell编程中扮演着至关重要的角色,它们使得自动化任务变得更加容易,提高了效率,并且可以处理各种各样的编程需求。

1.for循环

for循环允许你对一组元素(如数组中的元素、文件中的行、命令的输出等)进行迭代。

最常用的for循环

语法如下:

for i in list
do
    执行语句
done

i:循环变量,用于依次存储列表中的元素。

list:循环的元素列表,可以是由空格分隔的字符串,也可以是数组等。

实例如下:

利用for循环在/目录下创建csdni个文件夹

#!/bin/bash
for i in {
   
   1..10}
do
        mkdir /csdn$i
done

输出结果:

这是最基本的for循环语句

还可以用另外一种写法(等同于上边的写法)

#!/bin/bash
for i in $(seq 1 10)
do
        mkdir /csdn$i
done

实验创建用户

#!/bin/bash
#2024-3-7

for i in {
   
   1..10}
do
useradd  "csdn$i"
echo "csdn$i创建成功"
done

那么留给小伙伴们一个动手操作的实验 就是利用for循环来自动删除上边创建的用户

常用做法

人力部门给你发来一个名单现如今需要 创建对应的用户

如果名单有300个名字该如何创建呢 该不会是在人力部门报名完毕 之后跑到运维部来一个个创建用户吧

哈哈哈那样不得累坏

如下所示使用for几个命令搞定 这就是for循环的好处 当然使用其他循环也是可以实现的 下边举个例子供大家参考:

#!/bin/bash
[root@localhost ~] cat /etc/tables 
zhangsan
lisi
wangwu
csdn
csdn2
xiaoming

vim for.sh    编辑脚本
for i in `cat /etc/tables`        写入循环
do
useradd  "$i"
echo "$i创建成功"
done

C编程迭代循环

我们可以像 C 编程一样迭代循环。

#!/bin/bash
for ((i=1; i<=20; i++))
do
      echo $i
done

2.while循环

while循环又叫做死循环

while循环是Shell脚本编程中一种常见的循环结构,它允许你根据条件重复执行一组命令,直到条件不再满足为止。

语法格式:

1 while 条件测试
2 do
3   执行命令
4 done
  • 执行命令:循环条件,可以是任何能够产生退出状态码(0或非0)的表达式。
  • 当条件满足时,执行循环体中的命令;每次循环结束后重新检查条件,直到条件不再满足为止

实例如下:

#!/bin/bash

while :
do
let i++
echo $i
done

大家可以试一下这个我就不截图了。。。。。

通常循环都是结合判断语句来使用的

#!/bin/bash

while :
do
let i++
        if [ $i -eq 10  ];then
        echo "while实验结束!"
        break
        else
        echo $i
        fi
done

3.until循环

until循环是Shell脚本编程中的另一种常见循环结构,与while循环类似,但它在条件为假时执行循环体,直到条件为真为止。

语法格式:

until [ 条件判断]
do
    # 执行语句
done

条件判断:循环条件,可以是任何能够产生退出状态码(0或非0)的表达式。在每次循环迭代开始时,都会对条件进行求值。如果条件为假(退出状态码非0),则执行循环体中的命令;如果条件为真(退出状态码为0),则退出循环。

do 和 done:do 标记了循环体的开始,done 标记了循环体的结束。循环体是在每次循环迭代时执行的一组命令。

#!/bin/bash
let i=0
until [ $i -eq 5 ]
do
let i++
sleep 0.1
echo $i
done

详解这个过程

初始时,i的值为0。

进入until循环,检查条件$i -eq 5是否为真,因为i的初始值是0,条件为假,因此执行循环体。

执行let i++递增i的值,此时i的值变为1。

执行echo $i打印出当前的i值,即1。

循环继续,进入下一次迭代,重复步骤2至4,直到i的值等于5,此时循环终止。

区别

for循环:

用于对一组元素(如数组中的元素、文件中的行、命令的输出等)进行迭代。

循环的次数在循环开始之前就确定了,通常用于已知循环次数的情况。

语法形式为for variable in list,其中variable是循环变量,list是迭代的元素列表。

while循环:

在循环开始之前,根据条件的真假来决定是否执行循环体。

循环次数不一定是固定的,而是在运行时根据条件确定的。

语法形式为while [ condition ],循环条件的结果必须是退出状态码为0或非0的表达式。

until循环:

在循环开始之前,根据条件的真假来决定是否执行循环体,与while循环相反,它在条件为假时执行循环体,直到条件为真。

循环次数同样不一定是固定的,而是在运行时根据条件确定的。

语法形式为until [ condition ],循环条件的结果同样必须是退出状态码为0或非0的表达式。

总结:

for循环适用于已知循环次数的情况,可以用于迭代已知的元素列表。

while循环适用于根据条件决定循环执行的情况,循环次数不一定固定。

until循环也适用于根据条件决定循环执行的情况,与while循环不同的是它在条件为假时执行循环体。

选择合适的循环结构取决于具体的编程需求和循环条件。

相关文章
|
2月前
|
存储 Ubuntu Shell
shell 用法入门
本文档详细介绍了Shell脚本的基础知识,包括基本写法、变量定义与使用、命令置换、环境变量、数组操作、算术运算、输入输出处理、控制语句及循环结构等内容。文档还提供了丰富的示例代码,帮助读者更好地理解和掌握Shell编程技巧。此外,还介绍了如何使用`if`语句进行条件判断、`case`语句进行模式匹配以及`while`、`for`循环等控制结构。最后,文档还涵盖了函数定义与调用的方法。适合初学者和有一定基础的开发者参考学习。
|
4月前
|
Shell 测试技术 Linux
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
56 3
|
5月前
|
Shell UED Python
Shell 循环语句:重复任务的自动化利器
在Shell脚本中,循环语句如`while`和`for`是自动化任务的关键。`while`循环在条件满足时执行,例如计算1到100的和;`for-in`循环遍历列表,可用于迭代指定数值或命令输出,如求1到100的和。`select-in`循环提供交互式菜单,增强脚本用户体验。理解并运用这些循环能提升脚本效率和可读性。现在,动手试试吧!
53 2
|
5月前
|
Shell Linux
shell循环读文件 Linux脚本读文件
shell循环读文件 Linux脚本读文件
43 3
|
5月前
|
机器学习/深度学习 Shell Linux
linux shell脚本判断文件或文件夹是否存在循环操作
linux shell脚本判断文件或文件夹是否存在循环操作
181 0
|
6月前
|
机器学习/深度学习 Shell Perl
shell 脚本循环语句
shell 脚本循环语句
|
6月前
|
监控 Shell
shell学习(五) 【循环控制continue,break、while 语法】
shell学习(五) 【循环控制continue,break、while 语法】
35 0
|
29天前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
70 1
|
15天前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
38 2
6种方法打造出色的Shell脚本