阅读(682) (17)

Bash for循环

2020-06-17 16:26:21 更新

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

注:
1. i=1代表初始化
2. i<=10代表终止
3. 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语句,跳过特定的数值区间,直接处理下一个迭代。