0
我正在運行一個腳本,我正在查找進程使用的內存百分比。我做它作爲在下面的腳本:Bash:變量比較期間的「錯誤標記爲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
我越來越對在那裏我有memorylimit
比較memused
行此錯誤:
./start_decompose.sh:52行:[ :36 0:表達式中的語法錯誤(錯誤標記爲「0」)
如何解決此問題?我不明白爲什麼會發生。如果tmp
不爲空白,我的變量將被引用,只有在程序正在運行時纔會發生比較(isrun
> 0)和。
我並不總是得到這個錯誤。錯誤發生的時間很短,然後消失,然後再次發生,並以此類推(定期)。
我建議使用'set -x'來啓動它,這樣你就可以看到所有東西的值。 –