bash脚本expr-算术语法错误



我制作了一个bash脚本,使用ifconfig每10秒监控一次网络流量。它一定是ifconfig,否则我会使用不同的工具。

我的问题是因为我的计数器太高了,我不得不使用expr来进行计算,然而expr给我带来了一些问题。

#!/bin/bash
#run for how many seconds
savefile=/root/eth0.csv
timer=10
echo "EPOCH,Interface,TX,RX,ChangeTx,ChangeRX" >> $savefile
END=8640
x=$END
while [ $x -gt 0 ]; do
ETH0RX=`ifconfig | grep eth0 -A8 | grep "RX bytes" | tr -s ' ' | cut -d':' -f2 | cut -d ' ' -f1`
ETH0TX=`ifconfig | grep eth0 -A8 | grep "RX bytes" | tr -s ' ' | cut -d':' -f3 | cut -d ' ' -f1`
#ETH0 RX
ETH0RXcurrentvalue=$ETH0RX
ETH0RXchange=$(expr $ETH0RXcurrentvalue - $ETH0RXpreviousvalue)
ETH0RXpreviousvalue=$ETH0RXcurrentvalue
#ETH0 TX
ETH0TXcurrentvalue=$ETH0TX
ETH0TXchange=$(expr $ETH0TXcurrentvalue - $ETH0TXpreviousvalue)
ETH0TXpreviousvalue=$ETH0TXcurrentvalue
epoch=`date +%s`
echo $epoch,ETH0,$ETH0TX,$ETH0RX,$(($ETH0RXchange*8)),$(($ETH0TXchange*8)) >> $savefile
sleep $timer
x=$(($x-1))
done;

我的错误是line 33: arithmetic syntax error(即done;(。如果没有expr,脚本可以正常工作,但是由于数字太大,我需要使用expr(我不能使用bc(。

我已经解决了这个问题,

当我试着做时

expr

然后在脚本的后面,我对进行另一次计算

expr

由于通过回波进行计算的另一行而连续出现错误。

所以我用下面的代码修复了。

ETH0RXcurrentvalue=$ETH0RX
ETH0RXchange=$(expr "$ETH0RXcurrentvalue" - "$ETH0RXpreviousvalue")
ETH0RXpreviousvalue=$ETH0RXcurrentvalue
ETH0RXchange1=$(expr "$ETH0RXchange" * "8")
echo $ETH0RXchange1
echo $ETH0TXchange1

echo $epoch,ETH0,$ETH0TX,$ETH0RX,$ETH0RXchange1,$ETH0TXchange1 >> $savefile

相关内容

  • 没有找到相关文章