我正在编写一些循环浏览文本文件的ksh脚本,一次处理一行。 我倾向于使用
while read X1 X2 X3 X4
do
<process line>
done < $INFILE
但使用了类似事情的同事
IFS="
"
for LINE in `cat $INFILE`
do
<process line>
done
他使用'cut'来解析我自动获得的变量,但除此之外,这两种方法都有任何优点或缺点吗?别人怎么会这样做?
感谢。
答案 0 :(得分:1)
使用while read
可以提高内存效率,也可以在for LINE in
符号拆分'字数'的行上拆分。如果行中有空格,则会拆分行。
因此,除非有充分理由使用$(cat $INFILE)
表示法(在bash
中,您可以使用效率更高的$(<$INFILE)
),while read
是更好的选择。