값 0.000000이 파일에 있습니다. 파일을 열고 변수에 할당합니다. 그러나 그 값을 if [ "$var" -eq "0.000000" ]
과 비교하면 실제로는 평가되지 않습니다. 그 이유는 무엇일까요?쉘 스크립트 변수 값
또한 파일의 값이 0 인 경우, 값이 [ "$var" -eq "0" ]
인 경우에는 true로 평가됩니다.
값 0.000000이 파일에 있습니다. 파일을 열고 변수에 할당합니다. 그러나 그 값을 if [ "$var" -eq "0.000000" ]
과 비교하면 실제로는 평가되지 않습니다. 그 이유는 무엇일까요?쉘 스크립트 변수 값
또한 파일의 값이 0 인 경우, 값이 [ "$var" -eq "0" ]
인 경우에는 true로 평가됩니다.
(그를 위해 +1) bash는 부동 소수점을 지원하지 않습니다 말했다. 필요한 경우 문자열 비교를 사용하십시오.
if [ "$var" = "0.000000" ]
당신은 부동 소수점 연산을 지원하는 KSH로 전환 할 수 있습니다
$ bash
a=0.00000
[ $a -eq 0 ] && echo ok || echo ko
bash: [: 0.00000: integer expression expected
ko
$ ksh
$ a=0.00000
$ [ $a -eq 0 ] && echo ok || echo ko
ok
$ a=0.00001
$ [ $a -eq 0 ] && echo ok || echo ko
ko
bash는 float을 인식 할 수 없습니다. bc
을 사용해보십시오. 동등 함이 참이면 1을, 그렇지 않으면 0을 반환합니다.
if [ $(bc <<< $var==0.000000) -eq 1 ]
then
fi
또는 expr
:
if [ $(expr $var == 0.000000) -eq 1 ]
then
fi
당신은 0.00000이 숫자로 해석되지 않고, 따라서 단지 동일 제로로 확인이 있습니까? –
bash는 부동 소수점을 지원하지 않습니다. -eq는 정수에서 작동하며 대신 str 비교를 사용합니다. http://mywiki.wooledge.org/BashPitfalls를 참조하십시오. –
나는 0으로 만 확인하지만 false도 반환합니다. – thetux4