shell 的变量作用域

#shell脚本如下:
#!/bin/bash
count=1
cat datafile.txt | while myline=$(line)
do
 echo "LINE:"$myline
count=$[$count + 1]
#count=`expr $count + 1`
#echo $count
done

echo finish
echo "\r"
echo $count //输出仍然是1?
该shell脚本的while控制结构中的变量count做加1算术运算,最后一行输出值没有改变。

在shell中变量定义都是global的,除非在function内部用local定义变量,在这里为什么在最后一行的输出中,变量count没有增加呢?首先确认文件datafile.txt里面是有多行数据的,找到原因是这样的:cat datafile.txt | while 这里用了管道符,表明父shell中的局部变量不会传递到子shell中。问题解决

猜你喜欢

转载自blog.csdn.net/ZHUBOYAN123/article/details/39024845