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.16계산이 포함되어 있습니다 bc.)

에서 운영자 bc^정수지수화이므로 실제로는 v0.16이 아닌 0의 거듭제곱이 됩니다. 그러나 로그를 사용하여 일반 지수를 계산할 수 있습니다. x^y대신 을 사용할 수 있습니다 e(y*l(x)). 그래서 여기서 v^0.16필요한 것은 e(0.16*l(v)).

이를 위해서는 표준 수학 라이브러리를 포함 -l하도록 전환 해야 합니다. 특정 수준의 정밀도를 원하는 경우 스위치를 사용할 때 기본값이 20인 bc매개변수를 사용해야 합니다 .scalebc-l

관련 정보