プログラムはどのように複数の数値を引数として取り、計算しますか?例: 19 10,13 4, 12 3

プログラムはどのように複数の数値を引数として取り、計算しますか?例: 19 10,13 4, 12 3
#!/bin/bash
# Show help function
# Call with: -h 
function help(){ cat << EOF
Arguments:
Calculate the sum of several numbers. Example: $sum 19 115 21 
                                                    10  7   3
As soon as a letter is given in the argument, the program issues an error message. 
EOF
}

#Main program
if [ "$1" == "-h" ] ; then
        help
        exit
    fi
check='^[0-9]+$'
    if ! [[ $var =~ $check ]] ; then
        echo "error: Caution! It is not a number!"
            continue
    fi

x=${1//[^0-9]/}
sum=0

for ((i=0; i<${#x}; i++));

while [[ num -gt 0 ]];do
var=$(($num % 10))
num=$(($num / 10))
sum=$(($sum + $var))
done

echo $sum

プログラムは1つ以上の数字を引数として受け取り、指定された各数字の数字の合計を計算する必要があります。私は何も得られませんでした。プログラムはどのように複数の数値を引数として受け取り、計算しますか? ifループとwhileの両方を使用しました。説明は80文字を超えることはできません。

ベストアンサー1

これは反復的なアプローチです。数字数字を入力して合計します。

sum_digits() {
    local num=$1 len=${#1} sum=0 digit i
    for ((i=0; i<len; i++)); do
        digit=${num:i:1}
        sum=$((sum + digit))
    done
    echo "$sum"
}

それから

$ sum_digits 123
6
$ sum_digits 987654321
45

${var:offset:length}抽出するシェルのパラメータ拡張。サブストリング変数の値を超えています。

おすすめ記事