Unix 쉘 스크립트의 부동 소수점 수학 및 이를 변수에 할당

Unix 쉘 스크립트의 부동 소수점 수학 및 이를 변수에 할당

저는 항상 이런 식으로 정수 계산을 합니다.

a=12
b=23
c=$((a-b))
echo $c

그러나 이제 부동 소수점에서는 실패합니다. bc를 사용하여 이 작업을 수행할 수 있다는 내용을 읽었지만 결과를 마지막에 변수에 할당하고 싶습니다.

a=12.7
b=23.33
c=$((a-b)) | bc
echo $c

답변1

c=$( printf '%s - %s\n' "$a" "$b" | bc )

아니면 게으른 사람들을 위해,

c=$( echo "$a - $b" | bc )

또는 게으른 bash사용자의 경우,

c=$( bc <<<"$a - $b" )

코드의 문제는 다음과 같습니다.

c=$((a-b)) | bc

불가능한. 출력을 생성하는 항목만 (유용하게) 파이프할 수 있으며, 1) 또는 이 부동 소수점 숫자(구문 오류 포함)인 경우 c=$((a-b))할당이 실패하고 2) 출력이 생성되지 않습니다. 또한 (nothing)의 출력은 전혀 할당의 일부가 아니기 때문에 할당되지 않습니다.$a$bbcc

관련 정보