问题:

文件abc中有且只有一行数字32 2 43 6 77,编写shell脚本通过循环求和。

准备文本

echo "32 2 43 6 77" > abc

编写脚本

  1 #!/bin/bash
  2 #
  3 #*****************************************************************************
  4 #Author:                    sunmy
  5 #Mail:                      8528379[AT]]sina.com
  6 #Date:                      2021-09-07
  7 #FileName:                 aabc.sh
  8 #BlogURL:                   www.sunmy.pro
  9 #Description:              GodNamed
 10 #Copyright (C):            2021 All rights reserved
 11 #****************************************************************************
 12 for i in {1..5};do
 13    j=`cat /root/abc | awk -v test=$i '{print $test}'`
 14    let sum+=j
 15 done
 16 echo sum=$sum 

脚本解读

  • 通过cat命令读取abc文本
  • 通过管道将取出的值传给awk
  • awk通过-v参数指定变量 -v test=$i
  • awk通过print打印出$1 ~$5,也就是文本中的值
  • 写for循环,文本中5个数,所以i取值为1~5
  • 变量j的值为从文本中依次取出的数
  • 使用let让变量j循环自加
  • 通过echo命令打印出计算结果

此脚本主要使用了awk的自定义变量进行循环取值。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐