리눅스 bash 스크립트의 if 조건문에서 정수(integer)의 크기 비교는 기본적으로 제공된다.
x=2
y=-1
if (( $x > $y ))
then
echo "x의 값이 y의 값보다 큽니다."
fi
if [[ $x -gt $y ]]
then
echo "x의 값이 y의 값보다 큽니다."
fi
만약 비교하고자 하는 수자가 실수(부동소수점)인 경우에는 위의 예시와 같은 비교를 할 수 없다. 이럴때는 bc와 조합을 하면 되겠다. 우선 bc와 관련한 아래의 예시를 보자.
x=2.34
y=0.45
# x의 값이 y의 값보다 크면 1을 출력, 그렇지 않으면 0을 출력
echo "$x > $y" | bc
# x의 값이 y의 값과 같으면 1을 출력, 그렇지 않으면 0을 출력
echo "$x == $y" | bc
위의 예시를 if 조건문과 조합하면 아래와 같이 비교를 할 수 있다. bc에서 출력한 값이 0인지 1인지를 판정하도록 하면 된다.
if [[ `echo "$x > $y" | bc` -eq 1 ]]
then
echo "x의 값이 y의 값보다 큽니다."
x=2
y=-1
if (( $x > $y ))
then
echo "x의 값이 y의 값보다 큽니다."
fi
if [[ $x -gt $y ]]
then
echo "x의 값이 y의 값보다 큽니다."
fi
만약 비교하고자 하는 수자가 실수(부동소수점)인 경우에는 위의 예시와 같은 비교를 할 수 없다. 이럴때는 bc와 조합을 하면 되겠다. 우선 bc와 관련한 아래의 예시를 보자.
x=2.34
y=0.45
# x의 값이 y의 값보다 크면 1을 출력, 그렇지 않으면 0을 출력
echo "$x > $y" | bc
# x의 값이 y의 값과 같으면 1을 출력, 그렇지 않으면 0을 출력
echo "$x == $y" | bc
위의 예시를 if 조건문과 조합하면 아래와 같이 비교를 할 수 있다. bc에서 출력한 값이 0인지 1인지를 판정하도록 하면 된다.
if [[ `echo "$x > $y" | bc` -eq 1 ]]
then
echo "x의 값이 y의 값보다 큽니다."
fi
덧글