Bash 也支持 for 循環(huán)以執(zhí)行重復(fù)性任務(wù)。它可以幫助您在字符串中的一系列單詞或數(shù)組中的元素上迭代一組特定的語句。
語法:
for variable in list
do
commands
done
//或
for (( expression1; expression2; expression3 ))
do
commands
done
注:
-for
循環(huán)的迭代耗費(fèi)時(shí)間取決于聲明的列表變量的數(shù)量。
- 循環(huán)將從列表中選擇一項(xiàng),在循環(huán)中使用的變量上分配一個(gè)值。
- 在do···done
之間執(zhí)行完畢后循環(huán)返回頂部,從列表中選擇下一個(gè)項(xiàng),重復(fù)整個(gè)過程。
列表中可以包含數(shù)字或字符串,但需以空格進(jìn)行分隔。
示例:
#!/bin/bash
learn="Start learning from W3Cschool.cn"
for learn in $learn
do
echo $learn
done
echo "Thank You."
執(zhí)行后得到以下結(jié)果:
Start
learning
from
W3Cschool.cn
Thank You.
通過..
增加或減少指定的值,并以 for 循環(huán)讀取帶增/減的范圍。如下示例:
#!/bin/bash
for num in {10..0..1}
do
echo $num
done
執(zhí)行后得到以下結(jié)果:
10
9
8
7
6
5
4
3
2
1
0
for 循環(huán)可以通過循環(huán)迭代數(shù)組的值,如下示例:
#!/bin/bash
#Array Declaration
arr=( "Welcome","to","W3Cschool.cn" )
for i in "${arr[@]}"
do
echo $i
done
執(zhí)行后得到以下結(jié)果:
Welcome,
to,
W3Cschool.cn
注:
對于數(shù)組中的每個(gè)元素,通過執(zhí)行do···done
循環(huán)將每個(gè)元素作為i
進(jìn)行獲取。
三表達(dá)式語法是 for 循環(huán)中最常見的語法,如下示例:
#!/bin/bash
for ((i=1; i<=10; i++))
do
echo "$i"
done
執(zhí)行后得到以下結(jié)果:
1
2
3
4
5
6
7
8
9
10
注:
1. i=1代表初始化
2. i<=10代表終止
3. i++代表遞增的過程
當(dāng)以上三個(gè)表達(dá)式不滿足或不存在限制時(shí),for 循環(huán)將為無限循環(huán),以Ctrl + C終止無限循環(huán)。
您可以通過 break 語句可以終止 for 循環(huán)的重復(fù)性任務(wù),如下示例:
#!/bin/bash
for table in {2..100..2}
do
echo $table
if [ $table == 20 ]; then
break
fi
done
執(zhí)行后得到以下結(jié)果:
2
4
6
8
10
12
14
16
18
20
注:
當(dāng)table
=20時(shí)滿足if
語句,判斷為true
,進(jìn)入此處給定的break
語句,終止for
循環(huán)。
您可以通過 continue 語句在 for 循環(huán)中以特定條件跳過該條件下給定的特定語句,如下示例:
#!/bin/bash
for ((i=1; i<=20; i++));
do
if [[ $i -gt 5 && $i -lt 16 ]];
then
continue
fi
echo $i
done
執(zhí)行后得到以下結(jié)果:
1
2
3
4
5
16
17
18
19
20
注:
當(dāng)5<i
<16時(shí)滿足if
語句,判斷為true
,進(jìn)入此處給定的continue
語句,跳過特定的數(shù)值區(qū)間,直接處理下一個(gè)迭代。
更多建議: