我正在运行一个脚本,我在其中找到了一个过程中使用的百分比内存。我正在像下面的脚本中这样做:
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
我在将memused
与memorylimit
进行比较的行上遇到了此错误:
./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的一个以上实例正在运行。