다음을 통해 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
테스트 이중 괄호 주위에 괄호를 만들어 보십시오.