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))  
    

      

    然后就没有然后了~~~

  • 相关阅读:
    bzoj 2456 mode
    codeforces 630 I(规律&&组合)
    codeforces 630H (组合数学)
    codeforces 651A Joysticks
    codeforces 651B Beautiful Paintings
    codeforces 625C K-special Tables
    codeforces 630F Selection of Personnel(组合数)
    codeforce 630N Forecast
    后缀数组模板
    Hdu5737-Differencia(有序表线段树)
  • 原文地址:https://www.cnblogs.com/phyger/p/9525469.html
Copyright © 2011-2022 走看看