首页 > 解决方案 > 循环从文件中查找应用程序并使用 adb shell 将其拉取

问题描述

我从 bash 开始,我正在编写一个读取文件的脚本,在 android 设备中为每一行搜索信息(文件的每一行都是安装在设备上的应用程序的名称)

#!/bin/bash
filename="$1"
while read -r line
do
    name="$line"
    echo "App : - $name" | adb shell pm path $name

done < "$filename"

这里是这个脚本的结果

package:/data/app/com.naver.linewebtoon-1/base.apk
package:/data/app/com.game5mobile.lineandwater-2/base.apk

如何将每个结果行作为其他函数的参数

adb shell cat /data/app/com.naver.linewebtoon-1/base.apk > app1.apk 
adb shell cat /data/app/com.game5mobile.lineandwater-2/base.apk > app2.apk

标签: bashshell

解决方案


echo "App : - $name" | adb shell pm path $nameadb将作为命令调用,将 echo 的输出发送到其标准输入。那将无法实现您仅回显组合命令的目标。

使用 IFS 读取文件中的分隔数据并打印出组合命令,如下所示:

#!/bin/bash
filename="$1"
count=0
while IFS=: read -r _ path  # ignore the first field by reading it into a dummy variable
do
    printf '%s\n' "adb shell cat $path > app$((++count)).apk"
done < "$filename"

推荐阅读