当使用while读取文件时,可能出现while循环中读取正常,而数值确传不出去,不论是局部变量和全局变量。
错误代码如下:(file是文件的名字)
cat file|while read LINE
do
count=`expr $count + 1`
done
echo $count
解决方法如下:
可以先关闭标准输入,然后以你要读取得文件重新打开它,这样就不需要对while命令的输入进行改向,也就不会用子shell的方式来运行它了。如下:
exec<file
count=0
while read LINE
do
count=`expr $count + 1`
done
exec < /dev/tty
echo $count
参考文章:
当while遇到重定向----sh的陷阱