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中。问题解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值