조건 비교가 동일한 값 문자열과 비교하는 데 실패한 경우의 쉘 스크립트 명령 출력

조건 비교가 동일한 값 문자열과 비교하는 데 실패한 경우의 쉘 스크립트 명령 출력

다음을 통해 Android 버전을 결정하는 스크립트 조각을 통합하고 있습니다. adb shell getprop ro.build.version.release 이는 다음을 반환합니다. 4.1.2또는4.0.4

현재 스니펫은 다음과 같습니다.

if [ "$(adb shell getprop ro.build.version.release)" == "4.1.2" ]; then
    rw_path="/sdcard/"
elif [ "$(adb shell getprop ro.build.version.release)" == "4.0.4" ]; then
    rw_path="/data/local/"
fi
echo $rw_path

나는 push/pull 출력과 마찬가지로 adb가 stderr를 통해 값을 반환할 수 있다고 생각하여 이 작업도 시도했습니다(하지만 이것이 올바른 방법인지는 확실하지 않습니다).

if [ "$(adb shell getprop ro.build.version.release 2>&1)" == "4.1.2" ]; then
    rw_path="/sdcard/"
elif [ "$(adb shell getprop ro.build.version.release 2>&1)" == "4.0.4" ]; then
    rw_path="/data/local/"
fi
echo $rw_path

== 대신 -eq 연산자를 시도했지만 "정수 표현식이 필요합니다"라고 경고합니다.

그런 다음 실제로 무언가를 비교하는지 확인하기 위해 이것을 시도했습니다.

version=$(adb shell getprop ro.build.version.release 2>&1)
if [ "$version" == "4.1.2" ]; then
    rw_path="/sdcard/"
elif [ "$version" == "4.0.4" ]; then
    rw_path="/data/local/"
fi
echo $version
echo $rw_path

"$variable"운이 좋지 않은 인용을 시도했습니다 . 위의 결과는 $version예상대로 "4.0.4" 또는 "4.1.2"를 출력하지만 위의 모든 시도에서 $rw_path.

내가 도대체 ​​뭘 잘못하고있는 겁니까?!

미리 감사드립니다.

편집: 아래 제안된 대로 이중 괄호를 시도했지만 운이 없었습니다. "4.0.4" 출력이 "4.0.4" 문자열과 같지 않은 이유는 무엇입니까? 공백이 비교와 관련이 있습니까? 먼저 출력을 다듬을 수 있나요? 그냥 생각...

답변1

명령 출력에 "\r"이 있는 것 같습니다 adb. 노력하다

$(adb shell getprop ro.build.version.release | tr -d '\r')

답변2

테스트 이중 괄호 주위에 괄호를 만들어 보십시오.

관련 정보