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