linux shell中,循环相加,为何循环体外得不出结果?
现有代码如下:#!/bin/shsum=0/usr/bin/lua/root/test.lua2>&1|grep-A3-B2src$'\t'192.168.1.5|gre...
现有代码如下:
#!/bin/sh
sum=0
/usr/bin/lua /root/test.lua 2>&1 | grep -A3 -B2 src$'\t'192.168.1.5 | grep bytes | grep -oE [0-9]+ | while read line
do
sum=$(($sum+$line))
echo "L:$line S=$sum"
done
echo "bye sum=$sum"
运行结果如下
如果代码修改为如下,则结尾的sum可以得到累加结果:
/usr/bin/lua /root/test.lua 2>&1 | grep -A3 -B2 src$'\t'192.168.1.5 | grep bytes | grep -oE [0-9]+ > /tmp/a.txt
while read line
do
sum=$(($sum+$line))
echo "L:$line S=$sum"
done</tmp/a.txt
echo "bye sum=$sum"
问:为什么现有代码(使用管道)得不到累加结果,而使用文件读取方式则正确?如果必须使用管道,怎么修改?
补充:本脚本目的是通过一系列命令,输出一个字符串,字符串内容是每行一个纯数字,通过逐行读取,计算各行数字的和 展开
#!/bin/sh
sum=0
/usr/bin/lua /root/test.lua 2>&1 | grep -A3 -B2 src$'\t'192.168.1.5 | grep bytes | grep -oE [0-9]+ | while read line
do
sum=$(($sum+$line))
echo "L:$line S=$sum"
done
echo "bye sum=$sum"
运行结果如下
如果代码修改为如下,则结尾的sum可以得到累加结果:
/usr/bin/lua /root/test.lua 2>&1 | grep -A3 -B2 src$'\t'192.168.1.5 | grep bytes | grep -oE [0-9]+ > /tmp/a.txt
while read line
do
sum=$(($sum+$line))
echo "L:$line S=$sum"
done</tmp/a.txt
echo "bye sum=$sum"
问:为什么现有代码(使用管道)得不到累加结果,而使用文件读取方式则正确?如果必须使用管道,怎么修改?
补充:本脚本目的是通过一系列命令,输出一个字符串,字符串内容是每行一个纯数字,通过逐行读取,计算各行数字的和 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询