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"
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 array
name__.
Ensuite, bc
fait 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
num1=2
num2=4
num3=8
array=($num1 $num2 $num3)
declare -i sum
IFS=+ sum="${array[*]}"
echo $sum
Sortie:
14
Voir: help declare
Dans Python, il est très simple d'ajouter une liste de nombres.
$ python -c 'print sum([1,2,3])'
Sorties 6.
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.
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