잘못된 번호를 해결하는 방법: -1.00 |

잘못된 번호를 해결하는 방법: -1.00 |

두 숫자의 차이를 계산하는 시나리오가 있습니다.

그런 다음 계산된 차이를 범위에 걸쳐 확인해야 합니다.
이 범위 내에 있으면 표시 상태가 성공이고, 그렇지 않으면 실패로 표시됩니다.

아래는 내 코드입니다

Range = -1 to 1

var1=12.23
var2=13.23

diff=$(echo "($var1-$var2)"| bc -l)
echo $diff

if [ "$diff" -ge -1 ] && [ "$diff" -le 1 ]; then
        echo "$diff" "success"
else
   echo "Not within range -1 to 1"
   echo "Failure"
fi

오류는 다음과 같습니다

script.sh: 8: [: Illegal number: -1.00

답변1

이를 가지고 놀고 싶다면 awk다음과 같은 스크립트를 사용할 수 있습니다.

var1=12.23
var2=13.23
echo |awk -v v1=$var1 -v v2=$var2 '{diff=v1-v2;if(diff >= -1 && diff <=1) print diff " success" ;else printf "%s not within range [-1,1]\nFailure\n", diff }'

답변2

쉘은 산술 문맥에서 부동 소수점 값을 나타내는 문자열을 비교할 수 없습니다. 그러나 bc다음을 사용하여 계산한 부울(정수) 값을 평가할 수 있습니다.할 수 있는쉘에서 사용:

#!/bin/bash

val1=12.23
val2=13.23

difference=$( bc -l <<<"$val1 - $val2" )
range_ok=$( bc -l <<<"$difference >= -1 && $difference <= 1" )

if [ "$range_ok" -ne 0 ]; then
        printf '%s success\n' "$difference"
else
        printf '%s not within range [-1,1]\n' "$difference"
        echo "Failure"
fi

관련 정보