定义为环境变量没有用的,环境变量只是在子进程创建的时候可以从父进程复制到子进程,它无法实现从子进程往父进程传递,也不能在子进程运行期间从父进程获得新值。
解决的办法就是不要产生子进程,改成:
while read line
do
i=`echo "$line" |awk '{print $3}'`
j=$[j+i]
echo $j
done < test
这是因为管道的右边是在subshell中执行的,“j=0”这个语句定义的变量j和while里面的j不是同一个变量
可以将j设定为环境变量,即这样定义:
export j=0
这样两地方的j就是使用的同一个变量了