在这个监控实时网口速率的脚本中,第21,22行存在错误:
#!/bin/bash #Modified by lifei4@datangmobile.cn echo ===DTmobile NetSpeedMonitor=== sleep 1 echo loading... sleep 1 ethn=$1 while true do RXpre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}') TXpre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}') sleep 1 RXnext=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}') TXnext=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}') clear echo -e " RX TX TIME" RX=$((${RXnext}-${RXpre})) TX=$((${TXnext}-${TXpre})) if [ $RX -lt 1024 ];then RX="${RX}B/s" elif [ $RX -gt 1048576 ];then RX=$(echo $RX | awk '{print $1/1048576 "MB/s"}') else RX=$(echo $RX | awk '{print $1/1024 "KB/s"}') fi if [ $TX -lt 1024 ];then TX="${TX}B/s" elif [[ $TX -gt 1048576 ]];then TX=$(echo $TX | awk '{print $1/1048576 "MB/s"}') else TX=$(echo $TX | awk '{print $1/1024 "KB/s"}') fi echo -e "$ethn $RX $TX `date +%k:%M:%S` " done
修改后的文件
#!/bin/bash #Modified by lifei4@datangmobile.cn echo ===DTmobile NetSpeedMonitor=== sleep 1 echo loading... sleep 1 ethn=$1 while true do RXpre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}') TXpre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}') sleep 1 RXnext=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}') TXnext=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}') clear echo -e " RX TX TIME" RX=$((RXnext-RXpre)) TX=$((TXnext-TXpre)) if [ $RX -lt 1024 ];then RX="${RX}B/s" elif [ $RX -gt 1048576 ];then RX=$(echo $RX | awk '{print $1/1048576 "MB/s"}') else RX=$(echo $RX | awk '{print $1/1024 "KB/s"}') fi if [ $TX -lt 1024 ];then TX="${TX}B/s" elif [[ $TX -gt 1048576 ]];then TX=$(echo $TX | awk '{print $1/1048576 "MB/s"}') else TX=$(echo $TX | awk '{print $1/1024 "KB/s"}') fi echo -e "$ethn $RX $TX `date +%k:%M:%S` " done
原因为,在$取值的时候,括号里面只需要跟变量即可(变量可自行进行计算),不需要对括号内进行运算的变量在进行取值操作。
RX=$((${RXnext}-${RXpre})) TX=$((${TXnext}-${TXpre})) 修改后: RX=$((RXnext-RXpre)) TX=$((TXnext-TXpre))
然后就没有然后了~~~