1

我正在编写许多循环遍历文本文件的 ksh 脚本,一次处理一行。我倾向于使用

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

但是一位做过类似事情的同事使用了

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

他使用'cut'来解析我自动获得的变量,但除此之外,这两种方法有什么优点或缺点吗?其他人会如何做到这一点?

谢谢。

4

1 回答 1

1

使用while read的内存效率更高,并且还会在for LINE in符号在“单词”上拆分的行上拆分。如果行中有空格,则行将被拆分。

因此,除非有充分的理由使用该$(cat $INFILE)符号(在 中bash,您可以使用$(<$INFILE)哪个更有效),否则while read是更好的选择。

于 2013-05-15T16:35:54.107 回答