web-dev-qa-db-fra.com

Comment puis-je ajouter des entiers dans un tableau

J'essaie d'ajouter un nombre dans un tableau.

Exemple:

array=( 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 )

Je l'ai fait de cette façon, mais je veux utiliser un tableau, puis résumer les nombres dans un script Shell.

num1=2
num2=4
num3=8
num4=10
num5=12
num6=14
num7=16
num8=18
num9=20
sum=$((num1+num2+num3+num4+num5+num6+num7+num8+num9))
echo "The sum is: $sum"
4
DSH72

Tu peux faire:

$ array=( 2, 4, 6, 8, 10, 12, 14, 16, 18, 20)

$ echo "${array[@]/,/+}" | bc               
110
  • ${array[@]/,/+} est un modèle d’expansion de paramètre qui remplace tout , par + dans tous les éléments de arrayname__.

  • Ensuite, bcfait simplement l'addition

Brisons un peu pour clarifier:

$ array=( 2, 4, 6, 8, 10, 12, 14, 16, 18, 20)

$ echo "${array[@]/,/+}"                     
2+ 4+ 6+ 8+ 10+ 12+ 14+ 16+ 18+ 20

$ echo "${array[@]/,/+}" | bc
110
12
heemayl
num1=2
num2=4
num3=8
array=($num1 $num2 $num3)
declare -i sum
IFS=+ sum="${array[*]}"
echo $sum

Sortie:

 14 

Voir: help declare

3
Cyrus

Dans Python, il est très simple d'ajouter une liste de nombres.

$ python -c 'print sum([1,2,3])'

Sorties 6.

3
Progrock

Utiliser une boucle dans Bash:

#!/bin/bash

nums=(1 2 3)
total=0
for n in ${nums[@]}
do
  (( total += n ))
done
echo $total

Sorties 6.

2
Progrock

On pourrait aussi utiliser awk pour effectuer la somme en boucle:

$ echo "${arr[@]}"
1 2 3
$ awk 'BEGIN{for (arg in ARGV) sum += arg;print sum}' "${arr[@]}"
6
1