コマンドライン引数による平均計算

コマンドライン引数による平均計算

アクションは数字を入力する場合です。

4
1
2
9
8

出力=(最初の数字を除く系列のすべての数字の合計)/系列の最初の数字出力平均は次のようになります。1+2+9+8/(first_number_in series)=20/4=5

次のコードを試しましたが、操作を完了できませんでした。誰でもエラーを指摘してくれてとても感謝します。

#!/bin/bash
sum=0
count=1
for x in $*
do
    if [ $count -eq 1 ]
    then
        p=$x
    else
        sum=$(($sum + $x))
    fi
    ((count++))
done
echo "scale=3;$sum/$p" | bc

ベストアンサー1

浮動小数点計算が必要なので、最終的にbcまたはawkを使用します。全体の問題を解決するためにawkを使用するのはどうですか?以下はAwkでのみ動作するソリューションです。分子にnを使用し、分母にdを使用します。

$ printf "4\n1\n2\n9\n8\n" | awk '{if (NR == 1) {d = $0}; if (NR != 1) {n += $0}} END{printf "%.03f\n", n/(d*1.0)}'
5.000

おすすめ記事