一、while循環的基本概念
while是一種循環結構,用於重複執行一個代碼塊,直到指定的條件不再為真為止。while循環的基本語法如下:
while condition do command1 command2 command3 done
執行過程為:
- 先判斷條件
- 如果條件為真,則執行循環體中的指令
- 執行完畢後再次判斷條件,如果為真,則再次執行循環,否則終止循環
例如,以下代碼將在1至10之間打印所有偶數:
#!/bin/bash i=0 while [ $i -le 10 ] do if [ $(expr $i % 2) -eq 0 ] then echo $i fi i=$(expr $i + 1) done
執行結果:
0 2 4 6 8 10
二、 while和until循環的區別
while循環是在條件為真的情況下執行代碼塊,而until循環是在條件為假的情況下執行代碼塊。因此,until循環是while循環的反義詞。它的語法如下:
until condition do command1 command2 command3 done
執行過程為:
- 先判斷條件
- 如果條件為假,則執行循環體中的指令
- 執行完畢後再次判斷條件,如果為假,則再次執行循環,否則終止循環
例如,以下代碼將在1至10之間打印所有奇數:
#!/bin/bash i=0 until [ $i -gt 10 ] do if [ $(expr $i % 2) -ne 0 ] then echo $i fi i=$(expr $i + 1) done
執行結果:
1 3 5 7 9
三、while循環常見用途
1、按行讀取文件
while循環可以按行讀取文件,比如:
#!/bin/bash while read line do echo $line done < file.txt
執行結果會將file.txt文件中的每一行輸出:
line1 line2 line3 ...
2、循環處理命令結果
通過將命令輸出傳遞給while循環,可以在循環中對其進行處理,例如:
#!/bin/bash ps -ef | while read line do echo $line | grep "ssh" done
執行結果會將所有包含「ssh」關鍵字的進程篩選出來:
root 2831 1 0 10:13 ? 00:00:00 /usr/sbin/sshd -D frank 2937 2831 0 10:13 ? 00:00:00 sshd: frank@pts/2
3、使用while循環進行計算
使用while循環進行計算是很實用的,例如下面的代碼將計算1至100之間所有數的和:
#!/bin/bash sum=0 i=1 while [ $i -le 100 ] do sum=$(expr $sum + $i) i=$(expr $i + 1) done echo $sum
執行結果:
5050
四、while循環的一些注意事項
1、死循環
在while循環中如果沒有更新循環條件,將會發生死循環,如下面的例子:
#!/bin/bash i=0 while [ $i -lt 10 ] do echo $i done
這段代碼將永遠輸出0,因為$i的值沒有改變。為了避免死循環,需要在循環體中更新$i的值。
2、變量的值必須用雙引號或大括號包含
在while循環中,如果使用變量,要注意變量的值必須用雙引號或大括號包含,否則可能會出現意外錯誤。例如:
i=1 while [ $i -le 10 ] do echo $i i=i+1 done
這裡$i的值不會更新,因為i=i+1是一個字符串,而不是一個算術表達式。正確的寫法應該是:
i=1 while [ $i -le 10 ] do echo $i i=$(expr $i + 1) done
或
i=1 while [ $i -le 10 ] do echo $i i=$((i+1)) done
3、腳本執行時需要添加執行權限
如果你想運行bash腳本,記得在腳本上添加可執行權限,否則會報錯。要添加權限,可以使用如下的命令:
chmod +x script.sh
其中,script.sh表示你要添加權限的腳本文件名。
五、結語
在Linux運維工作中,使用while循環進行快速處理大量數據非常實用。掌握while循環的基本語法、注意事項和常見用法,可以讓你的工作更加高效便捷。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/284976.html