首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试将bash脚本转换为perl,无济于事

尝试将bash脚本转换为perl,无济于事
EN

Stack Overflow用户
提问于 2014-05-01 12:42:43
回答 1查看 59关注 0票数 0

我试着转换这个函数。

代码语言:javascript
复制
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中执行此操作:

代码语言:javascript
复制
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脚本输出:

代码语言:javascript
复制
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/s

Perl脚本输出:

代码语言:javascript
复制
0.158203125 0.212890625
0.22265625 0.14453125
0.052734375 0.072265625
0 0.072265625
0 0.140625

正如你所看到的,它没有输出我认为它应该是的样子,任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 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?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23402131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档