我需要的是将一个变量的值动态地(在循环中)增加另一个变量.以下是我的代码:

while read  Plate City Town Village Area Population; do
    echo "$Plate $City $Town $Village $Area $Population"
    
     printf "\n$totalNumberOfTowns\n " 
     totalNumberOfTowns=$totalNumberOfTowns+$Town
     totalNumberOfVillages=$totalNumberOfVillages+$Village

done < "cities.txt"

what I get when I run my code is a little bit not-correct. enter image description here

我不明白为什么$totalNumberOfTown变量中有"City".另一个有趣的部分是它还进行计算(它对第三个参数求和,即该市的城镇数量.对于Adana是15,对于Adiyaman是9,以此类推.)

Edit:

Cities.txt的第一行是:

板城镇村区人口

see screenshot:
enter image description here

Edit-2: # I have tried these different syntaxes:

let "totalNumberOfTowns+=$Town" #1 I tried these different syntaxes
totalNumberOfTowns=$((expr $totalNumberOfTowns + $Town)) #2
totalNumberOfTowns=$((totalNumberOfTowns + Town)) #3

然而,他们每个人都给了我一些错误.

以下是示例cities.txt和示例代码:

板城镇村区人口 1 ADANA 15 508 14030 2258718 2 ADIYAMAN 9 420 7614 632459 3 AFYONKARAHİSAR 18 395 14230 736912 4 AĞRI 8 566 11376 535435 5 AMASYA 7 352 5520 335494 6 ANKARA 25 711 25706 5663322 7 ANTALYA 19 545 20723 2548308 34 İSTANBUL 40 166 5196 15462452

code

#!/usr/bin/env bash

average=0
numberOfCities=80

declare -i totalNumberOfTowns=0 totalNumberOfVillages=0
arrayWithOut=""

while read  Plate City Town Village Area Population; do
    echo "$Plate $City $Town $Village $Area $Population"

    printf "\n$totalNumberOfTowns\n " 
      totalNumberOfTowns+=$Town
     totalNumberOfVillages+=$Village

done < "cities.txt"

推荐答案

你必须忽略第一行.

#!/usr/bin/env bash

average=0
numberOfCities=80

declare -i totalNumberOfTowns=0 totalNumberOfVillages=0
arrayWithOut=""

{
read -r first_line
while read -r Plate City Town Village Area Population; do
    echo "$Plate $City $Town $Village $Area $Population"

    printf "\n$totalNumberOfTowns\n " 
      totalNumberOfTowns+=$Town
     totalNumberOfVillages+=$Village

done 
} < "cities.txt"

Linux相关问答推荐

抛出主,即未捕获到SIGSEGV中的异常结果

为什么将JAX与Docker一起安装会创建如此大的镜像?

如何在 Linux 上打印带有屏蔽值的环境名称?

命令应在终端关闭后继续运行

`G++ 4.9.4` 中关于 WEXITSTATUS 的奇怪行为

Linux 如何将主机文件作为用户的输入并将其调用到脚本中

Dockerfile:无法复制文件

我应该如何从非 root Debian Linux 守护进程登录?

如何计算制表符分隔的文本文件中字段的唯一值的数量?

如何将执行的shell命令的结果存储在python的变量中?

通过 Linux FrameBuffer 将像素绘制到屏幕上

未定义的引用 'shm_open',已在此处添加 -lrt 标志

使用单个命令打开 .tar.gz 文件

比较linux中两个未排序的列表,列出第二个文件中的唯一性

是否有一个 linux 命令来确定与给定进程 ID 关联的窗口 ID?

如何将路径名中的..转换为 bash 脚本中的绝对名称?

在 reverse-i-search (Ctrl+R ) , 历史上类似命令之间切换的任何方法

如何安排 tcpdump 在特定时间段内运行?

Linux 上的 NuGet:获取响应流时出错

在我的 index.php 中加载 CSS 和 JS 等资源时出现错误 403