Потоковые аргументы, отброшенные командой awk - PullRequest
0 голосов
/ 13 декабря 2018

Я пишу команду 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...