2016-06-22 3 views
1

아래에 매우 간단한 논리를 작성했지만 항상 if 조건으로 불평하고 있습니다.조건과 적절하게 비교할 수 없습니다.

if [ "$UBUNTU_VERSION" -eq "14.04" ]; 

또는

if [ $UBUNTU_VERSION -eq "14.04" ]; 
: 나는 내 코드를 변경하는 경우

./test.sh: 6: ./1.sh: [[: not found 

: 나는이 같은 오류가

#!/bin/sh 

UBUNTU_VERSION=`lsb_release -r | awk '{ print $2}'` 
echo "UBUNTU_VERSION - $UBUNTU_VERSION" 

if [[ "$UBUNTU_VERSION" -eq "14.04" ]]; 
then 
     echo "Ubuntu 14.04" 
else 
     echo "Not Ubuntu 14.04" 
fi 

: 여기

내 코드입니다 이미이 링크를 언급 한

./test.sh: 6: [: Illegal number: 14.04 

내 코드를 해결하려면,하지만 난이 해결 할 수없는입니다 :

I는 다음과 같이 오류가 얻을에서

bash : Illegal number

+0

'='비교기를 사용해야합니다. -eq는 정수 비교를 위해 예약되어 있습니다. – pah

답변

4
  • 사용 #!/bin/bash 오두막을 bash 구문을 사용하기위한 top
  • eq은 정수 비교를 위해서 = 또는 ==
  • 을 사용하십시오. 명령 치환 대신 구식 및 버그 역에 대한
  • 사용 $(...)

수정 된 코드 틱 :

#!/bin/bash 

UBUNTU_VERSION=$(lsb_release -r | awk '{ print $2}') 
echo "UBUNTU_VERSION - $UBUNTU_VERSION" 

if [[ $UBUNTU_VERSION == "14.04" ]]; 
then 
     echo "Ubuntu 14.04" 
else 
     echo "Not Ubuntu 14.04" 
fi 
1

[[는 떠들썩한 -주의 즉 그것은 bash 키워드입니다.

당신이 상정이 bash하지 않고 [[ (dash?)를 지원하지 않습니다 sh으로 스크립트를 해석되기 때문에, 따라서 오류입니다.

1

참고 : -eq, -ne, -gt, -lt는 정수를 비교하는 데 사용됩니다. 문자열의 경우 작동하지 않습니다. ==,! =

UBUNTU_VERSION=`lsb_release -r | awk '{ print $2}'` 
    echo "UBUNTU_VERSION - $UBUNTU_VERSION" 

if [ "$UBUNTU_VERSION" == "14.04" ]; 
then 
     echo "Ubuntu 14.04" 
else 
     echo "Not Ubuntu 14.04" 
fi 
관련 문제