伙计们,我遇到了以下问题,我在 busybox 主机中发出 free 命令,我想检查我有多少可用内存,如果结果大于 10M,我需要打印,然后我应该返回类似“我有超过 30M 可用空间”等内容...我不知道如何处理 Expect 的输出。 我有代码片段
expect "$"
send "df -h\r"
expect "$"
send "uptime\r"
expect "$"
send "free | awk -F ' ' ' FNR == 2 {print \$3}'\r"
expect "$"
如何自由地处理命令的输出?该输出将为我提供整数以及分析条件所需的可用内存。
最佳答案
您可能想检查 free
的 Busybox 版本是否与 GNU 相同,但在我的 Fedora 系统上,free
的输出看起来像
total used free shared buffers cached
Mem: 3094900 2691252 403648 0 442924 983336
-/+ buffers/cache: 1264992 1829908
Swap: 2064380 126268 1938112
要获得可用内存,可以这样做:
free | awk -F ' ' ' FNR == 2 {print \$4}'
要捕获 tcl 变量中的 Expect
输出:
set results $expect_out(buffer)
所以做你想做的事情的方式大约是
send "free | awk -F ' ' ' FNR == 2 {print \$4}'\r"
set freeram $expect_out(buffer)
if { $freeram >= 10000 } {
puts "You have lots of free memory.\n"
}
关于linux - Expect ,需要处理表达式并在屏幕上打印结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24810101/