shell中for循环中的变量为何在done后面echo输出不正确
一个文件,名字为test,里面的内容是:1234234534564567我想要算出第三列的值的和。我自己的代码如下:#!/bin/bashj=0cattest|while...
一个文件,名字为test,里面的内容是:
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
我想要算出第三列的值的和。
我自己的代码如下:
#!/bin/bash
j=0
cat test |while read line
do
i=`echo "$line" |awk '{print $3}'`
j=$[j+i]
echo $j
done
echo $j
但是输出的结果:
[root@localhost test]# ./t.sh
3
7
12
18
0
也就是说,我希望在for完了之后输入结果,不知道为什么输出的还是0.而不是18 展开
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
我想要算出第三列的值的和。
我自己的代码如下:
#!/bin/bash
j=0
cat test |while read line
do
i=`echo "$line" |awk '{print $3}'`
j=$[j+i]
echo $j
done
echo $j
但是输出的结果:
[root@localhost test]# ./t.sh
3
7
12
18
0
也就是说,我希望在for完了之后输入结果,不知道为什么输出的还是0.而不是18 展开
2个回答
展开全部
这是因为管道的右边是在subshell中执行的,“j=0”这个语句定义的变量j和while里面的j不是同一个变量
可以将j设定为环境变量,即这样定义:
export j=0
这样两地方的j就是使用的同一个变量了
可以将j设定为环境变量,即这样定义:
export j=0
这样两地方的j就是使用的同一个变量了
追问
修改为:
#!/bin/bash
export j=0
cat test |while read line
do
i=`echo "$line" |awk '{print $3}'`
j=$[j+i]
echo $j
done
echo $j
输出结果还是一样啊。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询