Я пишу команду bash для подготовки файла CSV с доступными пакетами на устройстве Android и размером этих пакетов.
Это сценарий, который я подготовил:
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"}'
Он добавляет результаты в файл, как и ожидалось для первых нескольких пакетов.Однако затем он удалит последнюю часть пакета, из-за чего команда adb shell du -h
завершится ошибкой с неверным каталогом.Однако, если я просто использую
adb shell pm list packages -f |
awk -F: '{print $2}' |
awk -F= '{print $2","$1}'
, все пакеты будут напечатаны правильно.
Я только начал использовать awk для этой цели.Может кто-нибудь дать указание на то, почему это может происходить.Есть ли какая-то конфигурация размера буфера, которую я перезагружаю.
Это сбойный пакет, когда я просто печатаю:
com.android.defcontainer, / system / priv-app /DefaultContainerService / DefaultContainerService.apk
Когда я начинаю использовать cmd для получения размера apk, аргумент $1
выбирается как
/ system / priv-app / DefaultContainerS