当前位置: 首页 > 知识库问答 >
问题:

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

孟鹏海
2023-04-24

下面是监控网卡流量的 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

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

共有2个答案

终洛华
2023-04-24

这样试试可以吗? 修改的内容主要是针对于 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
鲁杜吟
2023-04-24
#!/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
 类似资料: