getopt と bc を使用した Bash スクリプト Wind Chill

getopt と bc を使用した Bash スクリプト Wind Chill

これで正しい出力が得られましたが、3つの場所にしか拡張されません。これを行う方法を知っている人はいますか?

function windchill {
    to=32
    v=10
    vel=`echo 'e(l('$v')*0.16)' | bc -l`
    w=$(echo "scale=3; $vel" | bc -l)
    twc=`echo "35.74 + (0.6215 * $to) - (35.75 * $w) + (0.4275 * $to * $w)" | bc`
    echo ''
    echo 'Windchill Calculator'
    echo 'Outside Air Temperature (F): '"$to"
    echo 'Wind Speed: '"$v"
    echo 'Wind-Chill (F): '"$twc"
    echo ''
    exit
}

私は$ tfと$ vを合わせましたが、$ wcは私の問題でした。電卓を使用してbashファイルにはありませんが、正解を得ました。問題は、私の$wが1.4454の代わりに1を返すことです。

答え1

(この回答は元の質問に答えて書かれており、計算が含まれていますv^0.16bc

bcオペレーター^整数指数化なので実際にはv0.16 ではなく 0 の累乗になります。ただし、ログを使用して一般指数を計算できます。x^y代わりに使用できますe(y*l(x))。だからここでv^0.16必要なのはe(0.16*l(v))

これを行うには、標準の数学ライブラリを含めるように-l切り替える必要があります。特定のレベルの精度が必要な場合は、スイッチを使用するときにデフォルト値が20のパラメータを使用する必要bcがあります。scalebc-l

関連情報