스크립트를 테스트했는데 bash에서 음의 부동 소수점 비교에서 실패합니다. 우리가 뭘 잘못하고 있니?
$F1=10000000000
$F2=300
FLP=$(bc <<< "scale=5; ($F2 - $F1)/$F2 * 100")
if [ $FLP -eq "1" ]; then
echo " greater"
else
echo "smaller"
fi
-99.99900으로 “더 크게”계속 인쇄합니다.
도움을 주셔서 감사합니다
답변
#!/bin/bash
F1=$1
F2=$2
FLP=$(bc <<< "scale=5; (${F2} - ${F1})/${F2} * 100")
if (( $(echo "${FLP} 1" | awk '{print ($1 > $2)}') )); then
echo "greater"
else
echo "smaller"
fi
채택 : https://stackoverflow.com/questions/11237794/how-to-compare-two-decimal-numbers-in-bash-awk
답변
유형 -eq
을 비교 하는 상태에 대한 배쉬 도움말 INTEGER
. 에 부동 소수점 지원이 없습니다 [
.
내가 권장하는 것은 이미 bc
계산에 사용 bc
하고 있다는 것입니다. 비교에도 사용 하지 않습니까? 대신에, 마찬가지로 if A < B
당신이 테스트 수, if B-A > 0
뺄셈이 수행되는 경우, bc
및 신호 점검이 쉽게 떠들썩한 파티에서 할 수.