Shell Script while 迴圈

常常在 shell script 腳本裡會需要讀檔案內容進來做字串處理,這大概是最常用到 while 的情形了,曾經有段時間需要一直處理文字檔裡的字串,不得不學會聰明的迴圈寫法,來解決重複性高的工作,以下就記錄這聰明的 while 迴圈寫法吧!

While 語法介紹與範例

while 寫法1

1
2
3
4
5
6
#!/bin/bash

while [ condition判斷式 ]
do
# do something
done

while 寫法2

while 和 do 寫在同一行

1
2
3
4
5
#!/bin/bash

while [ condition判斷式 ] ; do
# do something
done

常用範例

讀 text.txt 文字檔, 並且印出每一行

1
2
3
4
5
#!/bin/bash

while read line ; do
echo "$line"
done < text.txt

在 while 裡計數

1
2
3
4
5
6
7
8
#!/bin/bash

i=1
while [ $i != 5 ]
do
echo i=$i
i=$(($i+1))
done

while 無窮迴圈

1
2
3
4
5
6
7
#!/bin/bash

while [ 1 ]; do
date # 每1秒顯示時間一次
echo "This is a infinite loop."
sleep 1s
done

將資料分離

使用 IFS (Internal Field Separator) ,資料會依據 IFS 所定義的區隔符號將一行資料中的資料儲存成不同變數.

1
2
3
4
5
6
#!/bin/bash

while IFS=":" read -r f1 f2 f3 f4 f5 f6 f7;
do
echo "User:" $f1
done < /etc/passwd

下一篇介紹 function 函式

其他參考
http://benjr.tw/97517

其它相關文章推薦
Shell Script 新手入門教學
Shell Script 四則運算,變數相加、相減、相乘、相除
Shell Script if 條件判斷
Shell Script for 迴圈
Shell Script 讀檔,讀取 txt 文字檔