A coisa toda em awk
, loops de shell não é a ferramenta certa para fazer esse tipo de processamento :
tcpdump -tt -nn -S -r test.pcap | awk '
NR == 1 {start = $1}
{total += $NF}
END {
duration = $1 - start
print "total:", total
print "duration:", duration
print "average:", total/duration
}'
Observe como esses dois comandos são executados ao mesmo tempo em que milhares são executados em sequência sem compartilhar informações em sua abordagem. Este também lida com carimbos de hora corretamente.
Se, por algum motivo, você quiser aquelas variáveis do shell, você faria:
eval "$(
tcpdump -tt -nn -S -r test.pcap | awk '
NR == 1 {start = $1}
{total += $NF}
END {
duration = $1 - start
print "total=" total
print "duration=" duration
print "average=" total/duration
}'
)"
echo "$total $duration $average"