我需要从linux获得以字节为单位的交换内存大小,所以我执行此命令:
{ read firstLine; while read f t s u p; do echo $s; done;} < /proc/swaps
它返回:
523260
523260
我需要回复:
1046520
我尝试使用:
{ read firstLine; while read f t s u p; do echo $s++; done;} < /proc/swaps
但是我知道使用$ s ++是不正确的,我是bash的新手,所以如果有人有线索或想法我怎么需要用读取的值增加$ s变量?
如果我有例如:
523260 256523
我需要输出:
779783
答案 0 :(得分:2)
如果您想要总结第3列中的值,请执行以下操作:
awk 'NR>1{a+= $3} END {print a}' /proc/swaps
按照您的方式进行总结,您可以:
{ total=0; read firstLine; while read f t s u p; do : $((total += s)); done; echo $total; } < /proc/swaps
答案 1 :(得分:2)
在bash中,$((expr))
代表expr的算术评估。
A=1
B=2
echo $((A+B))
将打印3。
所以你需要首先从/ proc / swaps读取A和B,然后在分配后添加它们。
但请注意,这只会将整数计算为整数。