2013-05-15 57 views
1

我正在寫一些循環訪問文本文件的ksh腳本,一次處理它一行。 我傾向於使用通過文件讀取的方法

while read X1 X2 X3 X4 
do 
    <process line> 
done < $INFILE 

但同事誰沒有使用

IFS=" 
" 
for LINE in `cat $INFILE` 
do 
    <process line> 
done 

類似的事情,他使用「切割」來分析,我自動獲取變量,但除此之外,還有什麼兩種方法的優缺點?別人會怎麼做?

謝謝。

+1

你絕對是在正確的軌道上。你的同事正在使用不需要的/額外的過程,尤其是調用'cut'。祝你好運! – shellter

回答

1

使用while read是更有效的存儲器,並且還拆分對其中for LINE in符號上「單詞」分割線。如果線條中有空白,則線條將被拆分。

所以,除非有很好的理由來使用$(cat $INFILE)符號(在bash,你可以使用$(<$INFILE)這是更有效),該while read是更好的選擇。

+0

他設置$ IFS爲,所以行不分割(請參閱我的第二個代碼塊的前兩行) – rojomoke

+0

嗯......是的,我想是這樣......但如果行需要分成四個字段,這不如使用'while read'時好。 –