一、bash循環語句
Bash循環語句用於重複某一行為的操作,比如遍曆數組或文件。Bash有四種類型的循環語句:for循環、while循環、until循環和select循環。
以for循環為例,它的語法如下:
for variable in list do command1 command2 ... commandN done
其中,變數「variable」在每次循環時會賦值成「list」中的下一個值。比如,「list」可以是一個數組(用空格或換行符分隔)或者是一個文件名通配符,如「*.txt」。每次循環都會執行「command1」至「commandN」。
下面是for循環的一個示例:
#!/bin/bash for i in {1..5} do echo "Number: $i" done
結果為:
Number: 1 Number: 2 Number: 3 Number: 4 Number: 5
二、bash循環訪問文件
在Bash中,可以使用循環語句遍歷文件中的所有數據。比如,如果我們需要讀取一個文件中的每一行並列印出來,就可以使用while循環:
#!/bin/bash while read line do echo "$line" done < file.txt
這裡,「file.txt」是我們需要讀取的文件名。具體來說,每次循環會把文件的一行讀入變數「line」,接著執行echo語句,並輸出「line」變數的內容。
三、bash循環腳本
在Bash中,你也可以通過定義自己的腳本來執行循環操作。下面是一個簡單的示例腳本,該腳本使用for循環來輸出10個數字:
#!/bin/bash for i in {1..10} do echo "$i" done
如果將該腳本保存到文件「my_script.sh」中,並運行以下命令:
$ chmod +x my_script.sh $ ./my_script.sh
將會輸出:
1 2 3 4 5 6 7 8 9 10
四、bash循環嵌套
Bash循環語句也可以嵌套使用,以便執行更複雜的操作。比如,我們可以在for循環中使用while循環,或者在while循環中使用for循環。
下面是一個嵌套循環的示例腳本,它使用三層循環來輸出10以內的所有乘積:
#!/bin/bash for i in {1..10} do for j in {1..10} do for k in {1..10} do echo "$i x $j x $k = $((i*j*k))"; done done done
運行該腳本將會輸出:
1 x 1 x 1 = 1 1 x 1 x 2 = 2 1 x 1 x 3 = 3 ... 10 x 10 x 8 = 800 10 x 10 x 9 = 900 10 x 10 x 10 = 1000
五、bash循環計數
Bash循環中也有一種特殊的計數循環:C語言風格的for循環。它可以用於需要精確控制循環計數器的情況。
下面是一個使用C語言風格循環輸出10以內的所有數字的示例:
#!/bin/bash for (( i=1; i<=10; i++ )) do echo "$i" done
輸出結果為:
1 2 3 4 5 6 7 8 9 10
六、bash循環100次
Bash循環可以用來執行任意次數的操作,比如一百次。下面是一個使用for循環輸出「Hello World」100次的示例:
#!/bin/bash for (( i=1; i<=100; i++ )) do echo "Hello World" done
輸出結果為:
Hello World Hello World Hello World ...
七、bash循環命令
Bash循環可以與其他命令結合使用,從而使其更加靈活和有用。比如,我們可以使用curl命令下載100個隨機圖片,並將其保存到本地文件夾中:
#!/bin/bash for (( i=1; i<=100; i++ )) do curl -s -o "image-$i.jpg" "https://picsum.photos/200/300/?random" done
在這個腳本中,我們使用了curl命令來下載100張隨機圖片,並將它們以「image-$i.jpg」的格式保存在本地文件夾中。其中,「$i」是一個變數,它會在每次循環中自動遞增。
八、bash循環結構有哪幾種
前面我們已經介紹了Bash循環中最常用的四個語句:for循環、while循環、until循環和select循環。除此之外,Bash還提供了另外兩個比較少用的循環結構:case循環和連續命令。
case循環可以根據某一個值去匹配不同的模式,並執行其中的命令。比如,我們可以寫一個腳本來檢查一個文件名的擴展名,並根據不同的擴展名來執行不同的操作:
#!/bin/bash echo -n "Enter a file extension: " read ext case "$ext" in [Pp][Dd][Ff]) echo "The file is a PDF document." ;; [Dd][Oo][Cc][Xx]) echo "The file is a Word document." ;; [Jj][Pp][Gg]|[Gg][Ii][Ff]|[Pp][Nn][Gg]) echo "The file is an image." ;; *) echo "Unknown file type." ;; esac
連續命令是一種類似於while循環的結構,它可以用來多次執行某條命令,直到該命令的返回值不再是0為止。下面是一個使用連續命令刪除當前目錄下的所有空文件夾的示例:
#!/bin/bash while rmdir * do : done
在這個循環中,我們不斷地調用「rmdir *」命令,直到它返回一個非0值為止(即當前目錄下不存在空文件夾)。
九、bash循環讀取每行
Bash循環可以用於逐行讀取文件的內容,並執行某些操作。這在處理大量文本數據時非常有用。下面是一個將文件中的每一行字元轉換成大寫字母的示例腳本:
#!/bin/bash while read -r line do echo "$line" | tr '[:lower:]' '[:upper:]' done < file.txt
在這個腳本中,「read」命令會逐行讀取文件「file.txt」的內容,並將每一行保存在變數「line」中。接著,我們使用「tr」命令將變數「line」中的小寫字元轉換為大寫字元,最後輸出結果。
十、bash循環語句 while循環
while循環是Bash中最常見的循環語句之一。它的語法如下:
while condition do command1 command2 ... commandN done
其中,「condition」是一個邏輯表達式,如果其返回值為真,則會執行「command1」至「commandN」。當「condition」為假時,循環會停止。
下面是一個使用while循環計算1到10的總和的示例:
#!/bin/bash sum=0 i=1 while [ $i -le 10 ] do sum=$((sum+i)) i=$((i+1)) done echo "Sum is: $sum"
在這個腳本中,我們使用while循環來計算從1到10的所有數字的總和。在每次循環中,我們將當前數字「i」加到「sum」變數中,並將「i」遞增。最後,輸出計算結果。
總結
Bash循環語句可以用於重複某一行為的操作,包括遍曆數組或文件、執行特定次數的操作、嵌套循環、計數循環、匹配模式等等。熟練掌握Bash循環語句可以極大地提高編程效率,讓你能夠處理更大規模的任務。
原創文章,作者:ADQS,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/135682.html