帮忙看看这个shell脚本哪里有问题?

下面是监控网卡流量的 shell 脚本,运行后提示:
expr:语法错误

while true
do
        ens33_in=`ifconfig eth0 |grep "RX pack" | awk '{print $5}'`
        ens33_out=`ifconfig eth0 |grep "Tx pack" | awk '{print $5}'`
        inK=`expr $ens33_in / 8192`
        outK=`expr $ens33_out / 8192`

        echo "网卡接收的流量为:$ens33_in bit/s, $inK K/s"
        echo "网卡发送的流量为:$ens33_out bit/s, $outK K/s"

        #控制下刷新时间为2s
        sleep 2
done

看来看去不知道哪里出错了。

阅读 1.8k
2 个回答
#!/bin/bash

while true
do
    ens33_in=$(ifconfig eth0 | grep -E "RX packets" | awk '{print $5}')
    ens33_out=$(ifconfig eth0 | grep -E "TX packets" | awk '{print $5}')
    inK=$((ens33_in / 1024))
    outK=$((ens33_out / 1024))

    echo "网卡接收的流量为:$ens33_in bit/s, $inK K/s"
    echo "网卡发送的流量为:$ens33_out bit/s, $outK K/s"

    #控制下刷新时间为2s
    sleep 2
done

这样试试可以吗? 修改的内容主要是针对于 ens33_in 和 ens33_out这两个变量的赋值方式进行了修改 从 ` 变成了$()的方式

while true
do
        ens33_in=$(ifconfig ens33 |grep "RX pack" | awk '{print $5}')
        ens33_out=$(ifconfig ens33 |grep "Tx pack" | awk '{print $5}')
        inK=$(expr $ens33_in / 8192)
        outK=$(expr $ens33_out / 8192)

        echo "网卡接收的流量为:$ens33_in bit/s, $inK K/s"
        echo "网卡发送的流量为:$ens33_out bit/s, $outK K/s"

        #控制下刷新时间为2s
        sleep 2
done
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进