加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

数组 – 使用bash中的数组元素进行算术运算

发布时间:2020-12-15 21:18:28 所属栏目:安全 来源:网络整理
导读:我正在使用bash并尝试添加从文件创建的数组的所有元素. while read line; do array=($line); sum=0 length=${#array[@]} for i in ${array[@]:0:$length}; do sum=$[$sum+${array[i]}] #--- this doesn't work? done echo $sumdone $1 编辑: 我应该更清楚为
我正在使用bash并尝试添加从文件创建的数组的所有元素.

while read line; do
    array=($line);
    sum=0
    length=${#array[@]}
    for i in ${array[@]:0:$length}; do
       sum=$[$sum+${array[i]}]   #<--- this doesn't work?
    done
    echo $sum
done < $1

编辑:
我应该更清楚为什么我想在for循环中使用数组拆分

输入可以是——>大卫34 28 9 12

我想打印—>大卫83

所以我想循环遍历所有元素接受第一个.所以我会用:

length=$[${#array[@]} - 1]
for i in${array[@]:1:$length}

因为这个我不能用:

for i in "${array[@]}"

解决方法

尝试使用expr添加两个表达式,如:

sum=$(expr "$sum" + "${arr[i]}")

要么

sum=$((sum + arr[i]))


echo "11 13" >test.txt 
echo "12" >>test.txt

while read -a line; do ##read it as array
    sum=0
    for ((i=1; i < ${#line}; i++)); do ##for every number in line
       sum=$(expr "$sum" + "${line[i]}") ## add it to sum
    done
    echo $line[0] $sum ##print sum
done < test.txt
Output
36

OP编辑后:

echo“ABC 11 13”> test.txt
echo“DEF 12”>> test.txt

while read -a line; do ##read it as array
sum=0
for ((i=1; i < $((${#line[@]})); i++)); do ##for every number in line
   sum=$(expr "$sum" + "${line[i]}") ## add it to sum
   if [[ $i -eq $((${#line[@]}-1)) ]]
   then
       echo "${line[0]} $sum" ##print sum
       sum=0
   fi
done
done < test.txt
Output:
ABC 24
DEF 12

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读