使用 adb 卸载多个 android 软件包

Uba*_*hat 2 bash shell android adb

我正在尝试使用带有 adb uninstall 的 bash 脚本卸载多个软件包。

理论上,以下脚本应该可以工作:

adb shell pm list packages com.your.app |
cut -d ':' -f 2 | while read line ; do
  adb uninstall --verbose $line
done
Run Code Online (Sandbox Code Playgroud)

或者

adb shell pm list packages com.your.app |
cut -d ':' -f 2 |
xargs -L1 -t adb uninstall
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

失败 [DE​​LETE_FAILED_INTERNAL_ERROR]

我还发现问题在于 adb 命令没有从 shell 变量中获取管道参数或参数。例如下面的命令也

echo com.your.app | adb uninstall
Run Code Online (Sandbox Code Playgroud)

这也会产生同样的错误。

我已经看过通过 adb shell pm 删除域的包

Uba*_*hat 5

\r 添加到第一个命令的输出中。我们可以使用tr -d '\r'删除这些字符。

adb shell pm list packages com.your.app |
cut -d ':' -f 2 |
tr -d '\r' |
xargs -L1 -t adb uninstall
Run Code Online (Sandbox Code Playgroud)

Echo 中找到解决方案,在 BASH 中以不稳定的顺序输出结果