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.