Bash 第五讲 for循环 while循环 until循环

10 篇文章 0 订阅
8 篇文章 0 订阅

Bash for循环

Bash 也支持 for 循环以执行重复性人物。它可以帮助您在字符串中的一系列单词或数组中的元素上迭代一组特定的语句。

基础
语法:
for variable in list
do
commands
done

//或

for (( expression1; expression2; expression3 ))
do
commands
done

注:

  • for循环的迭代耗费时间取决于声明的列表变量的数量。
  • 循环将从列表中选择一项,在循环中使用的变量上分配一个值。
  • 在do···done之间执行完毕后循环返回顶部,从列表中选择下一个项,重复整个过程。 列表中可以包含数字或字符串,但需以空格进行分隔。
示例:
#!/bin/bash

learn="Start learning from W3Cschool.cn"

for learn in $learn
do
echo $learn
done

echo "Thank You."

执行后得到以下结果:

Start
learning
from
W3Cschool.cn
Thank You.
for 循环范围

通过**…**增加或减少指定的值,并以 for 循环读取带增/减的范围。如下示例:
#!/bin/bash

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

执行后得到以下结果:

10
9
8
7
6
5
4
3
2
1
0
for 循环读取数组变量

for 循环可以通过循环迭代数组的值,如下示例:

#!/bin/bash

#Array Declaration
arr=( "Welcome","to","W3Cschool.cn" )

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

执行后得到以下结果:

Welcome,
to,
W3Cschool.cn

注: 对于数组中的每个元素,通过执行do···done循环将每个元素作为i进行获取。

for 循环 — 三表达式

三表达式语法是 for 循环中最常见的语法,如下示例:

#!/bin/bash

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

执行后得到以下结果:

1
2
3
4
5
6
7
8
9
10

注:
i=1代表初始化
i<=10代表终止
i++代表递增的过程
当以上三个表达式不满足或不存在限制时,for 循环将为无限循环,以Ctrl + C终止无限循环。

for 循环 — break语句

您可以通过 break 语句可以终止 for 循环的重复性任务,如下示例:

#!/bin/bash

for table in {2..100..2}
do
echo $table
if [ $table == 20 ]; then
break
fi
done

执行后得到以下结果:

2
4
6
8
10
12
14
16
18
20

注: 当table=20时满足if语句,判断为true,进入此处给定的break语句,终止 for循环。

for 循环 — continue语句

您可以通过 continue 语句在 for 循环中以特定条件跳过该条件下给定的特定语句,如下示例:

#!/bin/bash

for ((i=1; i<=20; i++));
do
if [[ $i -gt 5 && $i -lt 16 ]];
then
continue
fi
echo $i
done

执行后得到以下结果:

1
2
3
4
5
16
17
18
19
20

注: 当5<i<16时满足if语句,判断为true,进入此处给定的continue语句,跳过特定的数值区间,直接处理下一个迭代。

Bash while循环

while循环可以定义为控制流语句,只要您所应用的条件为真,该语句就允许重复执行您给定的命令集。

基础
语法:
while [ expression ];
do
commands;
multiple commands;
done

注: expression可包含多个条件。 只要条件评估为真,do···done之间的命令会重复执行。 while循环的参数可以是布尔表达式。 若条件始终判断为true,则进入无限循环,可使用Ctrl + C终止循环。

运作规则:

检查条件,若判断为true,执行该条件后的命令集;若判断为false,退出循环。 2.在循环结束(包括退出循环)后,将程序控制权交给另一个命令。

while 循环 — break 语句

您可以通过 break 语句可以终止 while 循环的重复性任务,如下示例:

#!/bin/bash
#While Loop Example with a Break Statement

echo "Countdown for Website Launching..."
i=10
while [ $i -ge 1 ]
do
if [ $i == 2 ]
then
    echo "Mission Aborted, Some Technical Error Found."
    break
fi
echo "$i"
(( i-- ))
done

执行后得到以下结果:

10
9
8
7
6
5
4
3

注: 本次循环在第八次迭代写入了一个条件,为该条件给定了一个break语句中止迭代,并退出循环。

while 循环 — continue 语句

您可以通过 continue 语句在 while 循环中以特定条件跳过该条件下的迭代,如下示例:

#!/bin/bash
#While Loop Example with a Continue Statement

i=0
while [ $i -le 10 ]
do
((i++))
if [[ "$i" == 5 ]];
then
    continue
fi
echo "Current Number : $i"
done

执行后得到以下结果:

1
2
3
4
6
7
8
9
10
11

注: 在第五次循环写入了条件,为该条件给定了一个continue语句跳过本次迭代。

Bash until循环

与 while 循环相反,until 循环在条件判断为false时,循环执行一组命令。当判断首次为true时,循环才会终止。

基础
语法:
until [ expression ];
do
command1
command2
. . .
. . . .
commandN
done

注:

  • 在条件判断为false时才执行命令。
  • 条件判断为true后,循环终止。
  • 当until循环的判断条件为多个时,需要再以 []将所有条件括起来(保留语法中 expression的 [])。
  • 与 while循环相反,until循环直到返回非零状态。
  • until循环至少需要执行一次。
    示例:
#!/bin/bash

max=3
a=1
b=0

until [[ $a -gt $max || $b -gt $max ]];
do
echo "a = $a & b = $b."
((a++))
((b++))
done

执行后得到以下结果:

a = 1 & b = 0.
a = 2 & b = 1.
a = 3 & b = 2.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值