Bash for Loop教程及示例

循环是编程和脚本语言中最常用的机制之一。作为一种流行的脚本语言,Bash提供了不同的循环机制,以便轻松地迭代、枚举或运行重复的任务。在日常操作中,许多不同的任务可能需要重复的操作,这些操作可以通过使用不同的循环来完成。

Bash循环类型

在开始学习循环用法之前,我们应该知道有3种类型的循环。我们也可以这样称呼它,因为3个关键字可以用来在bash中创建一个循环。

  • for循环是最为人所知和使用的循环类型,通常在给定的列表、数组等上循环。
  • 而loop主要用于循环特定的条件
  • 直到循环没有被广泛使用

for循环

让我们从 for 循环,它将在给定的项列表或数组上进行迭代。for循环具有以下语法。

for ITEM in ITEMSdo   CODEdone
  • ITEMS是一个数组或列表,其中包含要逐步迭代的所有项。列表可以是一系列字符串,用空格、数字范围、命令输出、文件内容和数组等分隔。
  • 项是按顺序从项中选择的单个值。项目中的每个项目都将在每个步骤中设置为一个项目。
  • 代码是完成操作或任务的代码或主体部分,项目可以用于不同的目的。

数字范围上的循环

Bash for loop可用于循环或迭代给定的数字范围。 {START..END} 用于指定数字或数字列表的开始和结束。在下面的示例中,我们将从1开始,使用for循环迭代到10。

for i in {1..10}do  echo "Number: $i"done

输出如下。

Number: 1Number: 2Number: 3Number: 4Number: 5Number: 6Number: 7Number: 8Number: 9Number: 10

在上一个例子中,我们已经一个接一个地增加了,但是我们也可以更改增量值。数字范围的语法为{START..END..INCREMENT},其中INCREMENT是增量值。在这个例子中,我们将增加3。

for i in {0..21..3}
do
  echo "Number: $i"
done

输出如下。从0开始到21结束。

Number: 0Number: 3Number: 6Number: 9Number: 12Number: 15Number: 18Number: 21

或者,我们可以使用for循环来减少数字范围。我们将把较高的值作为起点,将较低的值作为终点。在下面的例子中,我们将从10减少到1。

for i in {10..1}
do
  echo "Number: $i"
done

for循环从10递减到1将输出以下文本。

Number: 10Number: 9Number: 8Number: 7Number: 6Number: 5Number: 4Number: 3Number: 2Number: 1

循环数字数组

Bash数组也可以很容易地用for循环进行迭代。数组包含一个或多个项目,这些项目的格式为字符串并用空格分隔。在下面的示例中,我们将创建一个名为sites的数组,并放置一些网站名。然后我们将遍历这些站点项并打印到控制台。

sites=('poftut.com' 'wisetut.com' 'linuxtect.com' 'pythontect.com' 'windowstect.com')for site in "${sites[@]}"; do   echo "Site name is $site"done

输出如下。

Site name is poftut.comSite name is wisetut.comSite name is linuxtect.comSite name is pythontect.comSite name is windowstect.com

C型For Loop

Linux管理员最流行的编程语言是C,Bash还提供了C风格的for循环,以便在项之间进行迭代。C风格的for循环与C编程语言for循环非常相似 初始化 , 测试 价值观存在。C-style for循环具有以下语法。

for ((INITIALIZATION; CONDITION; STEP))do   CODEdone
  • 初始化通常是一个变量,它将设置一个值,并且只为启动的语句执行一个。
  • 条件是一个逻辑语句,它将在每个步骤或迭代中被检查,无论是真是假。如果条件为true,则for循环继续;如果条件为false,则for循环结束。
  • 每一步都执行一步,以改变条件,如递增数字。
  • 代码在每个步骤或迭代中执行。

相关文章: 列出CentOS、RHEL、Fedora中带有“yum repolist”的已安装存储库

让我们用C风格的Bash for循环来做一个例子。我们将使事情变得非常简单,从1数到10。

for ((i = 1; i<= 10; i++))
do
   echo "Number is $i"done

输出如下。

Number is 1Number is 2Number is 3Number is 4Number is 5Number is 6Number is 7Number is 8Number is 9Number is 10

或者,我们可以使用 ; do 在for语句的同一行中。

for ((i = 1; i<= 10; i++)); do
   echo "Number is $i"
done

中断语句–停止循环

break 语句可以用来停止bash for循环。在迭代项时,可能会出现一些情况,循环应该停止,这通常由 if 声明。然后使用break语句将结束或停止for循环并退出循环。break语句没有任何参数或选项。

for ((i = 1; i<= 10; i++))
do
   if [[ "$i" == '4' ]]; then      break   fi   echo "Number is $i"
done

输出如下所示,输出将在4结束。

Number is 1Number is 2Number is 3

continue语句–跳转到下一个迭代

continue 语句用于跳过bash for循环中的步骤或迭代。continue不会完全停止for循环,只需跳过当前步骤即可。其中break语句将完全停止for循环,并且不继续下一步或迭代。continue通常与if语句一起用于检查特定条件。

for ((i = 1; i<= 10; i++))
do
   if [[ "$i" == '4' ]]; then
      continue   fi

   echo "Number is $i"

done

只有数字4将被跳过,for循环将继续。

Number is 1
Number is 2
Number is 3
Number is 5
Number is 6
Number is 7
Number is 8
Number is 9
Number is 10

无限循环

Bash for循环通常与start和end值一起使用。但在某些情况下,我们可能需要实现一个无限循环,直到外部停止它才会结束。无限for循环没有任何结束,但可以通过进程的结束或通过向外部发送kill信号来停止。bash中的无限for循环可以实现如下。

for (( ; ; ))
do
   echo "I go to the infinity"done

输出如下所示,无限循环将使用 CTRL+C 钥匙。

I go to the infinityI go to the infinityI go to the infinityI go to the infinityI go to the infinityI go to the infinityI go to the infinityI go to the infinityI go to the infinityI go to the infinityI go to the infinityI go to the infinity^C$
© 版权声明
THE END
喜欢就支持一下吧,技术咨询可以联系QQ407933975
点赞0
分享