如何在Shell的for循环中对遍历到的数值元素进行求和
解决方案
方案1:直接使用awk完成求和(更推荐,性能更好)
无需嵌套shell循环,awk本身即可完成提取首字段、累加、输出全流程,命令如下:
awk '{sum += $1} END {print sum}' "$3"
逻辑说明:逐行读取文件时将每行第一个字段累加到自定义变量sum中,所有行处理完成后输出sum的最终值,就是所有首字段的总和。给$3加双引号是为了避免文件路径包含空格时执行出错,属于shell编码的通用良好实践。
方案2:修改你现有的shell循环结构
如果需要保留原有遍历逻辑,可以新增累加变量实现求和,修改后代码如下:
sum=0 for id in $(awk '{ print $1 }' < "$3"); do sum=$((sum + id)) done echo $sum
逻辑说明:先初始化求和变量sum为0,循环过程中每次将提取到的首字段值加到sum中,循环结束后打印sum即可得到总和。
内容的提问来源于stack exchange,提问作者BaleKaneSon
相关产品推荐
相关产品推荐

