Bash bc和echo命令

时间:2013-09-04 13:29:49

标签: macos bash echo bc

我正在为geektool写小geeklet,当我的Mac上的非活动RAM和免费RAM总和变慢时提醒我。我对bash不是很好,所以我的最终输出有问题(变空)。 这是代码:

inMem=$(top -l 1|awk '/PhysMem/ {print $6}'|sed s/M//) | freeMem=$(top -l 1|awk '/PhysMem/ {print $10}'|sed s/M//) | totalMem=$inMem+$freeMem | bc | echo $totalMem

还想知道我的问题是否是最佳的。 非常感谢。

3 个答案:

答案 0 :(得分:2)

我想知道这是否真的可以简化你的命令。我不能测试它因为我不在OSX上,但我希望它有效。

read inMem freeMem totalMem < <(top -l 1 | awk '/PhysMem/ { i = $6; sub(/M/, "", i); f = $10; sub(/M/, "", f); printf("%d %d %d\n", i, f, i + f); exit; }')
echo "inMem: $inMem"
echo "freeMem: $freeMem"
echo "totalMem: $totalMem"

答案 1 :(得分:-1)

使用top文件,而不是解析/proc/meminfo。例如,使用:

$ head -2 /proc/meminfo
MemTotal:        4061696 kB
MemFree:          335064 kB

你可以看到总的和可用的记忆

答案 2 :(得分:-1)

user000001 answer是对的,但问题是“如何将/proc/meminfo输出到变量中?”

您可以使用此纯bash解决方案进行解析:

read -d '' _  memTotal _ _ memFree _ < <(head -2 /proc/meminfo)