2013-03-13 112 views
1

我有一個文本文件,它在每行上包含一個單詞。逐行讀取文件並在bash中執行每個操作

我需要在bash中讀取每一行的循環,然後在每次讀取一行時執行一個命令,並使用該行的輸入作爲命令的一部分。

我只是不確定在bash中做到這一點的正確語法。如果有人能幫上忙,那會很好。我需要使用作爲參數獲取的測試文件中的行來調用另一個函數。當文本文件中沒有更多行時,循環應該停止。

的僞代碼:

Read testfile.txt. 
For each in testfile.txt 
{ 
some_function linefromtestfile 
} 

回答

7

如何:

while read line 
do 
    echo $line 
    // or some_function "$line" 
done < testfile.txt 
0

作爲替代,使用文件描述符(#4在這種情況下):

file='testfile.txt' 
exec 4<$file 

while read -u4 t ; do 
    echo $t 
done 

不要使用cat!在循環cat幾乎總是錯的,即

cat testfile.txt | while read line 
do 
    # do something with $line here 
done 

,人們可能會開始在你拋出一個UUoCA

+0

除非您知道與從標準輸入讀取的其他命令有衝突,否則不需要使用其他文件描述符。 – chepner 2013-03-14 12:44:07

+0

@chepner - 確切地說,這就是爲什麼我在上面添加了答案的原因。 beny23給了一個完美的答案,我添加了一個替代方案。 – 2013-03-14 15:42:38

相關問題