Как добавить целые числа в массив

Я пытаюсь добавить некоторое число в массив.

Пример:

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

Я сделал это таким образом, но я хочу использовать массив, а затем суммируйте числа в сценарии оболочки.

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"
1
задан 5 December 2015 в 04:52

4 ответа

В Python очень просто добавить список чисел.

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

Выходы 6.

3
ответ дан 23 May 2018 в 15:16
  • 1
    не совсем. Элементы массива содержат литерал , s..перфус, возможно, вы можете сделать rstrip(',') для всех элементов, а затем выполнить добавление. В любом случае, я думаю, что OP означает оболочку здесь, а не язык высокого уровня :) – heemayl 4 December 2015 в 22:54
  • 2
    Он работает так, как есть. – Progrock 4 December 2015 в 23:16
  • 3
    Это также довольно легко в Turbo Pascal. – Marcin Kaminski 5 December 2015 в 05:06
num1=2
num2=4
num3=8
array=($num1 $num2 $num3)
declare -i sum
IFS=+ sum="${array[*]}"
echo $sum

Выход:

14

См .: help declare

3
ответ дан 23 May 2018 в 15:16
  • 1
    Нет необходимости в declare или IFS: array=(2 4 8); ((sum = ${array[@]/%/+}0)); echo "$sum" – Dennis Williamson 5 December 2015 в 02:59

Использование цикла в Bash:

#!/bin/bash

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

Выходы 6.

2
ответ дан 23 May 2018 в 15:16
  • 1
    [F1] – Dennis Williamson 5 December 2015 в 03:00
  • 2
    @DennisWilliamson, я думаю, что это немного менее интуитивно понятен для новичков, но, скорее всего, более идиоматично и чище. Спасибо, я изменил свой ответ. – Progrock 5 December 2015 в 03:15

Можно также использовать awk для выполнения суммирования циклов:

$ echo "${arr[@]}"
1 2 3
$ awk 'BEGIN{for (arg in ARGV) sum += arg;print sum}' "${arr[@]}"
6
1
ответ дан 23 May 2018 в 15:16

Другие вопросы по тегам:

Похожие вопросы: