2013-03-13 111 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

相关问题