2013-10-09 6 views
0

나는 이것이 멍청한 오류라는 것을 알고 있지만, 아직 해결책을 찾을 수있다.
나는 아파치 버전을 비교해야한다. 아파치 버전이 2.4.3보다 큰 경우 아파치를 설치하기 전에 시스템에 apr을 설치해야합니다.
하지만 어떤 이유로 나는 비교에서 산술 오류가 발생합니다.bash 스크립트의 Arithmethic 오류

2.4.4 
./test9.sh[9]: [: 2.4.3: arithmetic syntax error 
Error 

내가 좋아하는 것 :

#!/bin/ksh 

version="2.4.4" 
echo "$version" 

#if [ '2.4.3' == "$version" ] || [ '2.4.3' < "$version" ] 
if [ '2.4.3' -gt '$version' ] 

then 
     print "Mayor or equal" 
else 
     print "Error" 
fi 


이 출력됩니다 : 기본적으로
, 나는 아파치 버전을 나는 2.4.3
이와 비교해야합니다 테스트 스크립트입니다 내가 왜 비교를 할 수 없는지 아는거야?
감사합니다.

답변

1
if [[ '2.4.3' > "$version" ]] 
then 
    echo "Mayor or equal" 
else 
    echo "Error" 
fi 
+0

아마도'[['와'[''? – jxh

+0

http://www.tldp.org/LDP/abs/html/testconstructs.html – michael501

2

2.4.3은 숫자가 아니므로 숫자 비교를 사용할 수 없습니다.

이들은 문자열이며 이와 유사한 버전을 비교하는 것은 좋지 않습니다. 예 :

1.2.3 >= 1.0.0 
    but 
    1.2.3 < 1.10.3 

문제점을 참조하십시오.

-1

이 경우 십진수를 제거 할 수 있지만 일반적인 해결책은 아닙니다. 그것은 하여 주어진 예를 들어이 아니라도 2.10 버전 1.10.5 또는 단지 작업 ...

[ 244 -gt ${version//./} ] && echo True 

당신은 매우 강력한 (긴) 무언가를 원하는 경우에 당신은 코멘트에 링크 된 the solution를 사용할 수있다.

+1

(매우) 특수한 경우에만 주소 지정하는 것은별로 유용하지 않습니다. – chepner

+0

글쎄, 나는 당신의 이의 제기를 기대했으나 많은 경우에 맞았습니다. 버전이 9가되었을 때가 아니라 가변 개수의 하위 버전이있을 때가 아닙니다. 어느 쪽도 [apache versions] (http://httpd.apache.org/docs/)의 경우는 아닙니다. 나는 이것이 영업 사원의 경우에 불과하다는 것을 분명히했으며, 견고한 솔루션은 매우 길며, 대부분의 경우에 과도한 사용이라고 할 수 있습니다. – beroe