通过管道传递参数给while循环后,while循环会通过子shell的循环的方式执行,故循环内对变量做的操作,在当前shell内无法生效。
#sleep也是通过子shell进行,故如果sleep的进程意外终止,则shell执行的效果可能与预期结果不一致。
俩种处理方式:
第一种通过管道读取数据
i=0
cat data.txt |while read line
do
i=1
done
echo $i
第二种通过读取文件
i=0
while read line
do
i=1
done
echo $i
第一种发放的输出结果是0,第二种是1