Как добавить числа из переменной в сценарии оболочки? - PullRequest
0 голосов
/ 25 января 2019

Пример содержимого моей переменной $a равно 12 11 45 20 67.Как сложить / сложить все пять чисел и сохранить их в другой переменной с именем $b?

Ответы [ 3 ]

0 голосов
/ 25 января 2019
#!/bin/bash
a="12 11 45 20 67"
abc=' ' read -r -a arr <<< "$a"
b=0
for i in ${arr[@]}; do
  let b+=$i
done
echo "Total: $b"
0 голосов
/ 25 января 2019

без замены ничего

a="12 11 45 20 67"
for i in $a; do ((b+=$i)); done ; echo $b
155
0 голосов
/ 25 января 2019

Как отметил Камиль в комментарии, вам придется как-то обработать содержимое, чтобы заменить пробелы на знаки плюс, некоторые возможности

echo "$a" | sed 's/ /+/g'
echo "$a" | tr ' ' +
echo "${a// /+}"

Теперь мы должны это оценить.Вы можете использовать команду bc или встроенные математические возможности bash:

echo "$a" | tr ' ' + | bc  # like Kamil suggested 
echo $(( ${a// /+} ))    # bash builtins, probably faster

. Чтобы сохранить вывод команды в переменной, используйте var=$( command ), например

b=$(echo "$a" | tr ' ' + | bc)

Или более быстрый способ, который работает только для математики с внутренними компонентами bash:

echo "$a"            # 12 11 45 20 67
(( b = ${a// /+} ))
echo "$b"            # 155
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...