bash:变量比较期间"Error token is 0"



我正在运行一个脚本,我在其中找到了一个过程中使用的百分比内存。我正在像下面的脚本中这样做:

isrun=`pgrep $programname` #get process id
while [[ "$isrun" -gt "0" ]] #id > 0 indicates process is running
      do
          tmp=`top -bn1 | grep $isrun | awk '{print $10}' | cut -d'.' -f1` #parse output of top command
          if [[ -n "$tmp" ]]; then #tmp should not be blank.
               memused=$tmp  #get memory percent used
          fi
          if [[ "$memused" -ge "$memorylimit" ]]; then #check with memory limit
               overmemory=1 #too much used
               break
          fi
          isrun=`pgrep $programname` #check again and loop.
     done

我在将memusedmemorylimit进行比较的行上遇到了此错误:
./start_decompose.sh:第52行:[:[:360:表达式中的语法错误(错误令牌为" 0")

我该如何解决?我不明白为什么会发生。我的变量被引用,并且只有在程序运行(isrun> 0)的情况下,可以进行比较,如果tmp不是空白的。

我并不总是会遇到此错误。错误发生在短时间的时间内,然后消失,然后再次发生(定期)。

您的错误消息表明$ isrun的值是 "36 0",而-gt运营商不喜欢这样:

$ isrun="1 2"
$ [[ "$isrun" -gt "0" ]] && echo A || echo B
bash: [[: 1 2: syntax error in expression (error token is "2")
B

看起来$ programName的一个以上实例正在运行。

相关内容

  • 没有找到相关文章

最新更新