2
我試圖從我的android手機中導出所有apks(rooted)。adb不能在bash中使用變量
我已將所有使用adb shell pm list
的軟件包轉儲到文件中。
com.google.android.ears com.android.voicedialer ...
現在我想下載它們,但它不工作:
#!/bin/bash
while read line; do
echo "Name: $line"
# get package path
p=$(adb shell pm path $line);
# remove package: prefix
p=$(echo $p | grep -Po "(?<=package:).*" | xargs)
echo "Path: $p"
# download it
adb pull $p
done;
我得到的東西是這樣的:
Name: com.google.android.ears Path: /system/app/GoogleEars.apk ' does not exist/system/app/GoogleEars.apk Name: com.android.voicedialer Path: /system/priv-app/VoiceDialer.apk ' does not exist/system/priv-app/VoiceDialer.apk Name: com.android.defcontainer ^C
當我做手工的終端,它工作得很好。
爲什麼它不起作用?
這行'p = $(echo $ p | grep -Po「(?<= package:)。*」| xargs)'對我來說看起來最可疑。該行之前的$ p的值是多少?另外,引用你的變量總是一個好主意。 – 2015-04-03 11:32:27
查看輸出,在該行之後路徑是應該的。 – MightyPork 2015-04-03 11:53:37
如果你這麼說,但很明顯有一些微妙的事情發生 - 你是說如果你只是做'adb pull com.google.android.ears',那麼這是有效的?順便說一句,我認爲'p = $(awk -F:'/ package/{print $ 2}'<<<「$ p」)'會是一個更簡單的選擇。 – 2015-04-03 12:03:33