有逐行读取一个文件行两种方式,我想在这里讨论:猛砸while循环,通过线读取文件中的行
#!/bin/bash
while read line
do
echo-e "$ line \ n"
done <file.txt
和
#!/bin/bash
exec 3<file.txt
while read line
do
echo-e "$ line \ n"
done
所以第一个版本工作正常但我不明白与文件循环工作的机制。但我明白第二版的机制。但在这里,我不明白为什么它挂起,不打印任何东西。
不'<&3'在'read'线工作?它曾经是这样的,回到真正的Bourne shell的旧时代,重定向将在每一次循环中完成,因此你得到了有趣的效果(比如每次迭代关闭文件)。我可以相信,自那时起它已经被修改,所以事情的工作更加理智。 * FWIW *:当我在MacOS X上尝试'bash'时,使用:'while read line
2011-12-20 06:41:04
感谢乔恩,我试着用上面的脚本,它在我的Mac上工作。 http://cl.ly/ClDf但这是一些有用的信息。我不记得它。对于bash我还是很新的。刚刚学习'awk'和'sed'。但会启动一些有关bash基础知识的书籍。 :) – 2011-12-20 06:50:30
已编辑答案在'done'语句而不是'read'语句之后具有'<&3'。 – 2011-12-20 17:46:40