我试着转换这个函数。
R1=`cat /sys/class/net/eth1/statistics/rx_bytes`
T1=`cat /sys/class/net/eth1/statistics/tx_bytes`
sleep $INTERVAL
R2=`cat /sys/class/net/eth1/statistics/rx_bytes`
T2=`cat /sys/class/net/eth1/statistics/tx_bytes`
TBPS=`expr $T2 - $T1`
RBPS=`expr $R2 - $R1`
TKBPS=`expr $TBPS / 1024`
RKBPS=`expr $RBPS / 1024`
echo "TX $1: $TKBPS kb/s RX $1: $RKBPS kb/s"要在perl中执行此操作:
my $rx = `cat /sys/class/net/eth1/statistics/rx_bytes`;
my $tx = `cat /sys/class/net/eth1/statistics/tx_bytes`;
my $rx1 = `cat /sys/class/net/eth1/statistics/rx_bytes`;
my $tx1 = `cat /sys/class/net/eth1/statistics/tx_bytes`;
my $tb = $tx1 - $tx;
my $rb = $rx1 - $rx;
my $kbs = $tb / 1024;
my $rbs = $rb / 1024;
sleep 1;
print "$kbs $rbs\n";Bash脚本输出:
TX eth1: 10 kB/s RX eth1: 16 kB/s
TX eth1: 10 kB/s RX eth1: 15 kB/s
TX eth1: 10 kB/s RX eth1: 16 kB/s
TX eth1: 9 kB/s RX eth1: 14 kB/sPerl脚本输出:
0.158203125 0.212890625
0.22265625 0.14453125
0.052734375 0.072265625
0 0.072265625
0 0.140625正如你所看到的,它没有输出我认为它应该是的样子,任何帮助都将不胜感激。
发布于 2014-05-01 13:00:53
您的bash脚本输出与您提供的bash脚本代码中的echo语句不匹配。位和字节之间存在差异,因此您要么在输出中有一个拼写错误,要么您的函数中缺少代码。
在任何情况下,如果您将两个整数相除,expr将返回一个整数,而如果您将两个整数相除,Perl将返回一个浮点数。
如果需要来自Perl脚本的整数结果,可以考虑使用int关键字显式地转换数字参数。有关示例,请参阅:How can I make integer division in Perl OR How can I make my binary search work?
https://stackoverflow.com/questions/23402131
复制相似问题