zoukankan      html  css  js  c++  java
  • Shell下syntax error: operand expected (error token is “-”)

    在这个监控实时网口速率的脚本中,第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))  
    

      

    然后就没有然后了~~~

  • 相关阅读:
    vue项目按钮权限配置
    页面框架搭建模板可复用
    vue循环渲染复选框列表
    Vue项目网页版在浏览器中实现扫码识别功能(项目应用篇)
    基于51单片机的智能小车
    卡特兰数:翻折思想 翻折前后一一对应
    Redis之Info指令
    Redis的安全使用
    Redis中的近似LRU超出内存限制后的处理
    Redis主从同步
  • 原文地址:https://www.cnblogs.com/phyger/p/9525469.html
Copyright © 2011-2022 走看看