Bash for循環(huán)

2020-12-09 16:15 更新

Bash 也支持 for 循環(huán)以執(zhí)行重復(fù)性任務(wù)。它可以幫助您在字符串中的一系列單詞或數(shù)組中的元素上迭代一組特定的語(yǔ)句。

基礎(chǔ)

語(yǔ)法:

  1. for variable in list
  2. do
  3. commands
  4. done
  5. //或
  6. for (( expression1; expression2; expression3 ))
  7. do
  8. commands
  9. 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)行分隔。

示例:

  1. #!/bin/bash
  2. learn="Start learning from W3Cschool.cn"
  3. for learn in $learn
  4. do
  5. echo $learn
  6. done
  7. echo "Thank You."

執(zhí)行后得到以下結(jié)果:

  1. Start
  2. learning
  3. from
  4. W3Cschool.cn
  5. Thank You.

for 循環(huán)范圍

通過..增加或減少指定的值,并以 for 循環(huán)讀取帶增/減的范圍。如下示例:

  1. #!/bin/bash
  2. for num in {10..0..1}
  3. do
  4. echo $num
  5. done

執(zhí)行后得到以下結(jié)果:

  1. 10
  2. 9
  3. 8
  4. 7
  5. 6
  6. 5
  7. 4
  8. 3
  9. 2
  10. 1
  11. 0

for 循環(huán)讀取數(shù)組變量

for 循環(huán)可以通過循環(huán)迭代數(shù)組的值,如下示例:

  1. #!/bin/bash
  2. #Array Declaration
  3. arr=( "Welcome","to","W3Cschool.cn" )
  4. for i in "${arr[@]}"
  5. do
  6. echo $i
  7. done

執(zhí)行后得到以下結(jié)果:

  1. Welcome,
  2. to,
  3. W3Cschool.cn

注:
對(duì)于數(shù)組中的每個(gè)元素,通過執(zhí)行do···done循環(huán)將每個(gè)元素作為i進(jìn)行獲取。

for 循環(huán) — 三表達(dá)式

三表達(dá)式語(yǔ)法是 for 循環(huán)中最常見的語(yǔ)法,如下示例:

  1. #!/bin/bash
  2. for ((i=1; i<=10; i++))
  3. do
  4. echo "$i"
  5. done

執(zhí)行后得到以下結(jié)果:

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10

注:
1. i=1代表初始化
2. i<=10代表終止
3. i++代表遞增的過程

當(dāng)以上三個(gè)表達(dá)式不滿足或不存在限制時(shí),for 循環(huán)將為無限循環(huán),以Ctrl + C終止無限循環(huán)。

for 循環(huán) — break語(yǔ)句

您可以通過 break 語(yǔ)句可以終止 for 循環(huán)的重復(fù)性任務(wù),如下示例:

  1. #!/bin/bash
  2. for table in {2..100..2}
  3. do
  4. echo $table
  5. if [ $table == 20 ]; then
  6. break
  7. fi
  8. done

執(zhí)行后得到以下結(jié)果:

  1. 2
  2. 4
  3. 6
  4. 8
  5. 10
  6. 12
  7. 14
  8. 16
  9. 18
  10. 20

注:
當(dāng)table=20時(shí)滿足if語(yǔ)句,判斷為true,進(jìn)入此處給定的break語(yǔ)句,終止 for循環(huán)。

for 循環(huán) — continue語(yǔ)句

您可以通過 continue 語(yǔ)句在 for 循環(huán)中以特定條件跳過該條件下給定的特定語(yǔ)句,如下示例:

  1. #!/bin/bash
  2. for ((i=1; i<=20; i++));
  3. do
  4. if [[ $i -gt 5 && $i -lt 16 ]];
  5. then
  6. continue
  7. fi
  8. echo $i
  9. done

執(zhí)行后得到以下結(jié)果:

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 16
  7. 17
  8. 18
  9. 19
  10. 20

注:
當(dāng)5<i<16時(shí)滿足if語(yǔ)句,判斷為true,進(jìn)入此處給定的continue語(yǔ)句,跳過特定的數(shù)值區(qū)間,直接處理下一個(gè)迭代。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)