gpt4 book ai didi

bash - Shell - 表达式中的语法错误(错误标记为 "16")

转载 作者:行者123 更新时间:2023-12-05 06:30:09 36 4
gpt4 key购买 nike

我正在为我的大学做一个项目,这是我第一次使用 Bash 进行编码。

我正在尝试浏览一个 .txt 文档,阅读每一行,并获取我需要的信息以求和。

.txt 文档看起来像这样:

83210:Henrique Gaspar:EIB2:911235444:metas@gmail.com:carro:BMW:82-RX-14:5:25:26 88110:Vasco Rapido:IB2:962222222:vrapid@gmail.com:mota:BMW:33-MT-99:3:5:16 88020:Maria Aguiar:EIB2:911555444:mguiar@gmail.com:carro:mercedes:88-TX-11:2:20:12

对于我正在做的事情,我需要计算每个用户的最后一个数字的总和,所以 26+16+12。

现在,这是我的代码:

#!/bin/bash
echo -n "Nº de condutores: "
echo $(cat condutores.txt | wc -l)
echo -n "Nº de passageiros: "
echo $(cat passageiros.txt | wc -l)
echo -n "Saldo total dos condutores: "
x=0
linhas=$(cat condutores.txt | wc -l)
i=0
while [[ $i -le $linhas ]]; do
sum=$(cat condutores.txt | head -$i | tail -$(( $linhas + 1 - $i )) | cut -d':' -f11)
x=$((x+sum))
i=$((i+1))
done
echo "$x"

我在这里写得很完整,所以不会遗漏任何内容。

这里问题的关键是第 7 行到第 15 行。我不知道这是否是我浏览 condutores.txt 文件每一行或任何其他内容的方式。但是我收到了这个错误:

Saldo total dos condutores: ./stats.sh: line 12: 26
16: syntax error in expression (error token is "16")
26

所以出于某种原因它只读取.txt 文档的第一行和第二行,但不能求和,有人可以帮我吗?提前致谢。

最佳答案

您的 $sum 包含不止一行,因此它不能被解释为数字。而且您的文本处理循环是一场噩梦,有一个更清洁的解决方案。看:

x=0
while IFS=: read -r a b c d e f g h i j k; do
x=$((x+k))
done < condutores.txt
echo "$x"

关于bash - Shell - 表达式中的语法错误(错误标记为 "16"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52776305/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com