我正在编写bash命令以准备CSV文件,其中包含android设备中的可用软件包以及这些软件包的大小。
这是我准备的脚本:
{"1", "10", "11", ..., "2", "20"}
它按预期将前几个软件包的结果附加到文件中。但是,它将删除软件包的最后一部分,因此TreeMap<String, Indicador> sortedMap = new TreeMap<>(new Comparator<String>() {
public int compare(String string1, String string2) {
return Double.parseDouble(string1) - Double.parseDouble(string2) < 0.0 ? -1 : 1;
}
});
命令将在无效目录下失败。
但是,如果我只是使用
adb shell pm list packages -f |
awk -F: '{print $2}' |
awk -F= '{print $2 "," $1;
cmd="adb shell du -h \"" $1 "\" | cut -f1";
cmd|getline $3;
close(cmd);
print $2","$3","$1 >> "apk_size.csv"}'
它会正确打印所有包装。
我刚刚开始为此目的使用awk。有人可以指出为什么会发生这种情况吗?是否有一些我过度调配的缓冲区大小配置。
这是我刚打印时出现故障的软件包:
com.android.defcontainer,/ system / priv-app / DefaultContainerService / DefaultContainerService.apk
一旦我开始使用cmd来获取apk大小,就将adb shell du -h
arg选为
/ system / priv-app / DefaultContainerS