linux bash while while loop plus variable value

时间:2017-09-06 19:19:07

标签: bash

我需要从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

2 个答案:

答案 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,然后在分配后添加它们。

但请注意,这只会将整数计算为整数。