$ @は数学ループに使用されます。

$ @は数学ループに使用されます。

数値リストをコマンドライン引数として使用し、その数値の合計を出力するBashスクリプトを作成しようとしています。

したがって、スクリプトが実行されたscript.sh 1 555 22 122 66後、すべてが要約されます。変数に渡してループを実行する必要があることを知っていますが、数学を実行するためにコンテンツをintに$@変換する方法を理解していません。$@私はこれを試みます:

#!/bin/bash
for i in $@
do
    $@+$@
    echo "the total is `$@`"
done

ベストアンサー1

通常、算術$((...))拡張に引数を使用すると、自動的に整数に変換されます。このループはすべてのパラメータを合計します。

for x; do sum=$((sum+x)); done; echo "$sum"

acプログラムがargv []配列を処理すると、シェルはすべての引数を別々のメモリ位置にキャッシュします。シェルユーザーは配列を直接処理する必要はなく、シェルはそれを$ 1、$ 2、$ 3などに割り当てて助けます。シェルは「$@」などのリストも抽象化します。最後に、構文はすべての引数を繰り返す略語ですfor xfor x in "$@"

引数が0で始まらない10進数、0で始まる8進数、またはで始まる16進数0xで、合計がオーバーフローしないとします(64ビットシステムでは2 ^ 63-1)。

このリスト:

$ ./script 12 021 0xab

印刷されます200(小数点結果)。

おすすめ記事