欢迎,来自IP地址为:3.138.102.178 的朋友


本节,我们将学习如何在 Bash 脚本中使用 for while 以及 until 来设置循环。

循环对于编程语言来说是一个非强强大的功能,如果对于循环没有概念,可以想像成,在一定的条件下重复做同一件事。

例如我们想打印输出 1 到 100 的全部数字,我们当然可以使用 100 条 echo 命令来完成。这显然不够合理,因为我们 echo 输出数字的工作是重复操作的,只是每次输出的数字不同而以。于是我们就可以利用循环语句,通过改变输出数字值,从而实现使用少量代码来完成类似功能。

Bash 中支持三种类型的循环:

  • For
  • While
  • Until

Bash 使用 For 循环

典型的 For 循环语法如下所示:

for arg in LIST; do
 commands
done

这里的 LIST 可以是一个数组也可以是一组元素的列表。大括号”{}”可以在循环中用于指定元素列表。

我们演示一个非常简单的循环操作,按顺序打印1至10,使用 for 循环的脚本内容如下:

#!/usr/bin/bash

for num in {1..10}; do
	echo $num
done

上面的脚本, for 语句同样可以写成”for num in 1 2 3 4 5 6 7 8 9 10; do”,同样可以表示元素列表。但是使用大括号就显得简洁而精巧。

“{..}”的作用是扩展一个列表。”{d..h}”同样会被扩展成为”d e f g h”,此类形式使用也非常广泛。

PS:如果您对于 C 语言比较熟悉,那么也可以在 bash 脚本中使用类 C 的循环,格式如下所示:

for ((i = 0 ; i < 10 ; i++)); do
echo $i
done

同样,for 语言可以使用如下形式使用数组:

#!/usr/bin/bash

distros=(Ubuntu Fedora Debian Alpine)

for i in "${distros[@]}"; do
	echo $i
done

脚本执行的结果会依次显示数组中的所有元素值。

Bash 使用 While 循环

While 循环会验证循环条件,当条件为真时,会一直执行循环体中的命令,直到条件为假是中止循环。使用格式如下所示:

while [ condition ]; do
  commands
done

如果使用 While 循环重写上面的脚本,则脚本内容如下:

#!/usr/bin/bash

num=1
while [ $num -le 10 ]; do
	echo $num
	num=$(($num+1))
done

如脚本内容所示,我们首先定义了一个变量”num”,并给其赋值为1,之后使用 while 循环,每次令 num 的值加1,直到 num 的值大于10时,因条件不满足而中止循环。

Bash 使用 Until 循环

Until 循环是使用的比较少的一种循环形式,它的行为与 while 比较类似,区别在于比较条件。Until 循环是检测循环条件为真是则结束循环,即循环条件为假时则执行循环,直到满足循环条件时则中止循环。

之前使用 While 编写的脚本如果使用 Until 循环,则需要修改为如下形式:

#!/usr/bin/bash

num=1
until [ $num -gt 10 ]; do
	echo $num
	num=$(($num+1))
done

循环条件的作了相应的修改,其余内容保持一致。

了解了循环结构,就可以进一步深入学习 Bash 编程的函数功能 >>Bash 基础(九):Bash 使用函数<<

One thought on “Bash 基础(八):FOR WHILE UNTIL 循环”

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注