Shell Script: Как мне добавить цифры номера? - PullRequest
1 голос
/ 03 ноября 2011

Я делаю сценарий оболочки, который берет одно число (длина не важна) из командной строки и складывает его цифры вместе. Я думал, что он у меня есть, но он не будет работать и либо отображает «0 + 3 + 4 + 5», если ввод команды 345, либо отображает переменные, когда я использую expr для их добавления.

#!/bin/bash
sum=0
i="$(expr length $1)"
s=$1

for i in $(seq 0 $((${#s} - 1))); do
    value=${s:$i:1}
    typeset -i value
    sum=$sum+$value
done
echo $sum

Также не работает, когда я заменяю его на sum = 'expr $ sum + $ value'

есть идеи?

Ответы [ 2 ]

4 голосов
/ 03 ноября 2011

То, что вы ищете, это sum=$(($sum+$value)).

0 голосов
/ 03 ноября 2011
#!/bin/bash

expr $(echo $1| sed 's/./& + /g;s/..$//')

Например, если аргумент 12345, это переводит его в строку 1 + 2 + 3 + 4 + 5 и использует expr для его оценки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...