shell 关于 while 循环中赋值的问题
程序1
#!/bin/sh
count=0
cat temp.txt|while read fre
do
count=$(($count+$fre))
done
echo "$count"
exit 1
程序2
#!/bin/sh
count=0
exec 3< temp.txt
while read fre <&3
do
count=$(($count+$fre))
done
echo "$count"
exit 1
程序3
#!/bin/sh
count=0
while read fre
do
count=$(($count+$fre))
done<temp.txt
echo "$count"
exit 1
temp.txt文件的内容
2
2
在运行以上3个程序以后我们会发现
1程序输出结果是0
2,3的输出结果为正确的4
原因是因为程序1使用了管道,管道中的while是在子shell中运行的,并不能返回到父shell中
所以count的值成为了初始化时的值
————————————————
版权声明:本文为CSDN博主「icetomoyo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/icetomoyo/article/details/5388889