bash script expr - ошибка арифметического синтаксиса - PullRequest
0 голосов
/ 21 ноября 2019

Я создал bash-скрипт для мониторинга сетевого трафика каждые 10 секунд с помощью ifconfig. Это должно быть 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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...