bash数値配列を合計する方法(一部は科学的表記法で表されます)?

bash数値配列を合計する方法(一部は科学的表記法で表されます)?

bcを使用した後のコマンドは科学表記の数には機能しないので、awkを使用するなどの代替手段があるかどうか疑問に思います。

sum=$( IFS="+"; bc <<< "${arrValues[*]}" )

ベストアンサー1

sum=$(
  awk 'BEGIN {t=0; for (i in ARGV) t+=ARGV[i]; print t}' "${arrValues[@]}"
)

zshを使用してください(そうでない場合持つbash内部的に浮動小数点数をサポートしているからです。

sum=$((${(j[+])arrValues}))

そしてksh93

提供された精度が必要な場合は、bc数字が次の12e23ように変更されるように前処理できます(12*10^23)

sum=$(
  IFS=+
  sed 's/\([0-9.]*\)[eE]\([-+]*[0-9]*\)/(\1*10^\2)/g' <<< "${arrValues[*]}" |
    bc -l
)

おすすめ記事