Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在编写许多循环遍历文本文件的 ksh 脚本,一次处理一行。我倾向于使用
while read X1 X2 X3 X4 do <process line> done < $INFILE
但是一位做过类似事情的同事使用了
IFS=" " for LINE in `cat $INFILE` do <process line> done
他使用'cut'来解析我自动获得的变量,但除此之外,这两种方法有什么优点或缺点吗?其他人会如何做到这一点?
谢谢。
使用while read的内存效率更高,并且还会在for LINE in符号在“单词”上拆分的行上拆分。如果行中有空格,则行将被拆分。
while read
for LINE in
因此,除非有充分的理由使用该$(cat $INFILE)符号(在 中bash,您可以使用$(<$INFILE)哪个更有效),否则while read是更好的选择。
$(cat $INFILE)
bash
$(<$INFILE)