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
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"
が、うまくいきませんでした。上記では、 に対しては予想どおり「4.0.4」または「4.1.2」が出力されます$version
が、上記のすべての試行では に対して何も出力されません$rw_path
。
何を間違えているのでしょうか?
前もって感謝します。
編集: 下記のように二重括弧を試しましたが、うまくいきませんでした。なぜ「4.0.4」の出力が「4.0.4」文字列と等しくないのでしょうか? 比較に空白は関係しますか? 最初に出力をトリミングできますか? 単なる考えです...
答え1
コマンドの出力に「\r」が含まれていると思われますadb
。
$(adb shell getprop ro.build.version.release | tr -d '\r')
答え2
テストの二重括弧の周りにこれらの括弧を作成してみてください。