web-dev-qa-db-ja.com

数のbash配列を合計する方法(科学的記数法の一部)?

Bcを使用する次のコマンドは、科学的記数法の数値では機能しないため、別の方法について考えていました。 awkを使用していますか?

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

Zshを使用する場合(bashを使用するためにhaveを使用しない場合)、内部で浮動小数点数をサポートするため:

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
)
4

Perlソリューション:

Perl -MList::Util=sum -l -e 'print sum(@ARGV)' "${array[@]}"
2
choroba