如何在shell腳本中使用BASH“for”循環
BASH(代表Bourne Again Shell)是大多數基於Linux和UNIX操作系統使用的腳本語言。
您可以在終端窗口中依次運行BASH命令,也可以將命令添加到文本文件以生成shell腳本。
編寫shell腳本的好處是你可以一次又一次地運行它們。 例如,假設您需要將用戶添加到系統,設置他們的權限並管理他們的起始環境。 您可以在一張紙上寫下命令並在添加新用戶時運行這些命令,也可以編寫單個腳本並僅將參數傳遞到該腳本中。
腳本語言(如BASH)具有與其他語言類似的編程結構。 例如,您可以使用導入參數從鍵盤獲取輸入並將它們存儲為變量。 然後,您可以根據輸入參數的值,讓腳本執行特定的操作 。
任何編程和腳本語言的關鍵部分是一次又一次運行同一段代碼的能力。
有很多方法可以重複代碼(也稱為循環)。 在本指南中,您將看到如何編寫“for”循環。
for循環一遍又一遍地重複某段代碼。 它們非常有用,因此一系列命令可以繼續運行,直到滿足特定條件,然後停止。
在本指南中,您將看到五種在BASH腳本中使用for循環的方法。
入門之前
在開始使用for循環示例之前,您需要打開終端窗口並執行以下步驟:
- 輸入mkdir腳本 ( 在此處了解有關mkdir的更多信息 )
- 輸入cd腳本 ( 將目錄更改為腳本 )
- 輸入nano examplen.sh (其中n是您正在處理的示例)
- 輸入腳本
- 按CTRL + O保存並按CTRL + X退出
- 運行bash examplen.sh(再次, n是您正在使用的示例)
如何循環列表
#!/斌/慶典
為1 2 3 4 5中的數字
做
echo $ number
DONE
退出0
BASH使用“for”循環的方式與大多數其他編程和腳本語言處理“for”循環的方式有所不同。 讓我們打破腳本...
在BASH“for”循環中, do和done之間的語句對列表中的每個項目執行一次。
在上面的例子中,列表是在單詞後面的所有內容(即1 2 3 4 5)。
每次循環迭代時,列表中的下一個值將插入到單詞“for”後面指定的變量中。 在上面的循環中,變量被稱為數字 。
echo語句用於在屏幕上顯示信息。
因此,此示例將數字1到5逐個輸出到屏幕:
- 1
- 2
- 3
- 4
- 五
如何在起點和終點之間循環
上述例子的麻煩是,如果你想處理一個更大的列表(比如1到500),那麼首先輸入所有數字將需要很長時間。
這給我們帶來了第二個例子,它展示瞭如何指定一個開始和結束點:
#!/斌/慶典
為{1..10}中的號碼
做
迴聲“$號碼”
DONE
退出0
規則基本相同。 單詞“ in”後面的值構成了要遍歷的列表,列表中的每個值都放置在變量(即數字)中,並且每次循環迭代時,執行do和done之間的語句。
主要區別在於列表形成的方式。 花括號{}基本上表示一個範圍,在這種情況下,範圍是1到10(兩個點分開範圍的開始和結束)。
因此,該示例貫穿每個介於1和10之間的數字,並將該數字輸出到屏幕上,如下所示:
- 1
- 2
- 3
- 4
- 五
- 6
- 7
- 8
- 9
- 10
同樣的循環可以像這樣寫, 語法與第一個例子相同:
1 2 3 4 5 6 7 8 9 10
如何跳過一個範圍內的數字
前面的例子展示瞭如何在開始點和結束點之間循環,所以現在我們來看看如何跳過範圍內的數字。
想像一下你想在0到100之間循環,但只顯示每十個數字。 以下腳本顯示瞭如何做到這一點:
#!/斌/慶典
為{0..100..10}中的數字
做
迴聲“$號碼”
DONE
退出0
規則基本相同。 有一個列表,一個變量,以及do和do之間要執行的一組語句。 此時的列表如下所示:{0..100..10}。
第一個數字是0,結束數字是100.第三個數字(10)是列表中將跳過的項目數。
因此,上面的例子顯示了以下輸出:
- 0
- 10
- 20
- 三十
- 40
- 50
- 60
- 70
- 80
- 90
- 100
更傳統的尋找循環
與其他編程語言相比,BASH編寫循環的方式有點奇怪。
但是,您可以使用與C編程語言類似的風格編寫for循環,如下所示:
#!/斌/慶典
for((number = 1; number <100; number ++))
{
如果(($ number%5 == 0))
然後
迴聲“$數字可以被5整除”
科幻
}
退出0
循環通過將變量編號設置為1開始(編號= 1 )。 循環將保持迭代,而數值小於100( 數字<100 )。 在每次迭代之後, 數字的值通過加1來改變( 數字++ )。
花括號之間的所有內容都是通過循環的每次迭代執行的。
大括號之間的位檢查數值,將其除以5,並將餘數與0進行比較。如果餘數為0,則數字可被5整除,然後顯示在屏幕上。
例如:
- 5可以被5整除
- 10可以被5整除
- 15可以被5整除
如果要更改迭代的步長,可以將number ++節修改為number = number + 2 , number = number + 5或number = number + 10等。
這可以進一步減少到數字+ = 2或數字+ = 5 。
一個實例
For循環可以做更多的迭代數字列表。 您實際上可以使用其他命令的輸出作為列表。
#!/斌/慶典
本例中的列表是每個在當前文件夾中擴展名為.MP3的文件,變量是一個文件 。
mpg命令將MP3文件轉換為WAV。 但是,您可能需要先使用軟件包管理器進行安裝。