gpt4 book ai didi

android - 在 Android adb shell 中运行 shell 脚本

转载 作者:行者123 更新时间:2023-11-29 20:58:34 25 4
gpt4 key购买 nike

我正在尝试创建一个脚本,以通过 adb shell 从 Android 模拟器中查找和删除我的应用。

这是我得到的:

adb shell "
cd data/app
for app in com.mycompany.*.apk;
do
echo $app
bundle=$(echo $app | sed 's/-[0-9]//g')
echo 'bundle name is $bundle'
if [ '$bundle' != '' ];then
adb uninstall $bundle
else
echo 'No apps found'
fi
done
exit
"

但它似乎没有按预期工作。

  • 我的for 循环不遍历任何内容。如果我在 shell 中完全按照上面的方式手动运行命令,它会起作用,但是当我从 shellscript 运行它时,for 循环看不到文件或任何东西。虽然如果我添加一个“ls”,它会正确打印文件夹的内容……所以;
  • echo $app 不打印任何内容(空字符串);
  • echo 'bundle name is $bundle' 打印 bundle name is

因此,它显然永远不会进入我的 if block ,落入我的 else 子句,仅此而已。

我做错了什么?我在 shell 脚本方面不是很有经验,我会很感激任何想法。

我的目标是拥有一个 shell 函数,我可以调用它来自动执行从模拟器中删除我的应用程序的过程,而无需手动拖动和卸载它。也非常欢迎其他想法。

谢谢!

最佳答案

您不应该真正浏览 /data/app 文件夹。如果要使用单个 adb 命令卸载名称与 com.mycompany 模式匹配的多个包,请使用:

adb shell "pm list packages com.mycompany | cut -c9- | xargs -n 1 sh /system/bin/pm uninstall"

关于android - 在 Android adb shell 中运行 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26865761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com