Ich integriere ein Skript-Snippet, das die Android-Version bestimmt über:
adb shell getprop ro.build.version.release
was zurückgibt: 4.1.2
oder4.0.4
Das Snippet sieht aktuell so aus:
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
Ich dachte, dass ADB den Wert möglicherweise über stderr zurückgibt, genau wie bei Push/Pull-Ausgaben, also habe ich auch Folgendes versucht (bin mir allerdings nicht sicher, ob das die richtige Vorgehensweise ist):
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
Habe den Operator -eq statt == ausprobiert, aber es kommt die Warnung „Ganzzahliger Ausdruck erwartet“.
Um sicherzustellen, dass tatsächlich ein Vergleich zustande kommt, habe ich Folgendes ausprobiert:
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
Habe versucht, "$variable"
die Anführungszeichen zu entfernen, aber ohne Erfolg. Oben wird wie erwartet „4.0.4“ oder „4.1.2“ für ausgegeben, $version
aber bei allen obigen Versuchen wird für nichts ausgegeben $rw_path
.
Was mache ich falsch?!
Dank im Voraus.
BEARBEITEN: Habe es mit doppelten Klammern versucht, wie unten vorgeschlagen, aber ohne Erfolg. Wie kommt es, dass die Ausgabe „4.0.4“ nicht mit der Zeichenfolge „4.0.4“ übereinstimmt? Sind Leerzeichen im Vergleich relevant? Kann ich die Ausgabe zuerst kürzen? Nur so ein Gedanke …
Antwort1
Ich vermute, dass die Ausgabe des adb
Befehls ein "\r" enthält. Versuchen Sie
$(adb shell getprop ro.build.version.release | tr -d '\r')
Antwort2
Versuchen Sie, diese Klammern um Ihre Test-Doppelklammern zu machen.