的输出top
并不意味着以这种方式解析。您可以通过其他更简单(更好!)的方式获得内存量。
sed -n -e '/^MemTotal/s/^[^0-9]*//p' /proc/meminfo
或者您可以解析 的输出free
,它也知道如何以方便的尺寸显示:
# total memory in megabytes
free -m | sed -n -e '/^Mem:/s/^[^0-9]*\([0-9]*\) .*/\1/p'
编辑:你总是要问自己“谁扩展了什么?”
要使用期望发送这些命令,请尝试
send "sed -n -e '/^MemTotal/s/^\[^0-9\]*//p' /proc/meminfo\n"
# also removes kb suffix
send "sed -n -e '/^MemTotal/{s/^\[^0-9\]*//;s/ .*//p}' /proc/meminfo\n"
# displays in megabytes
send "free -m | sed -n -e '/^Mem:/{s/^\[^0-9\]*//;s/ .*//p}'\n"
这避开expect
了它本来要处理的和打算用于的事情sed
。
这是您原件的(正确转义)版本。
send "top -n 1 | grep Mem: | awk '{ print \$(NF-7) }' | cut -d 'k' -f1\n"