の出力は、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'
編集:あなたは常に「誰が何を拡張するのか」と自問する必要があります。
これらのコマンドをexpectで送信するには、
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"