Команда Unzip не работает в скрипте при запуске

Хотя проблема оказалась вызванной символами CR в adb shellвыводе (, вставленном дисциплиной строки tty pty, созданной в целевой системе Android (, см. здесь для получения более подробной информации )), другое возможное объяснение (, и я оставлю его там для будущих читателей, так как это общая проблема с xargs), которая могла быть в:

adb shell ls /data/data | grep -i com.company | xargs -n1 adb uninstall

В зависимости от реализации xargsstdin adbбудет либо /dev/null, либо конвейером из grep. В любом случае это не будет tty, и, возможно, поэтому adbдает сбой, если предполагается, что он сможет взаимодействовать с пользователем.

С GNU xargsи оболочкой с поддержкой замены процесса (, такой как zsh), вы можете изменить его на:

xargs -n1 -ra <(adb shell ls /data/data | grep -i com.company) adb uninstall

В этом случае xargsсчитывает список из файла, указанного в качестве аргумента для -a, что позволяет вам не трогать стандартный ввод.

Или, поскольку вы упомянули zsh, вы могли бы использовать:

autoload zargs # best in ~/.zshrc
zargs -L1 $(adb shell ls /data/data | grep -i com.company) -- adb uninstall

(использование -Lвместо -n, так как zargs-nограничивает общее количество аргументов до adb(, включая uninstallодин ), что означает, что мы нужно-n 2).

Или просто используйте цикл, который в этом случае будет еще короче и понятнее:

for x ($(adb shell ls /data/data | grep -i com.company)) adb uninstall $x

2
01.08.2019, 09:45
1 ответ

Я думаю, что файлы из /usr/bin/ не всегда доступны во время загрузки -:

/usr/bin is a standard directory on Unix-like operating systems that contains most of the executable files (i.e., ready-to-run programs) that are not needed for booting (i.e., starting) or repairing the system. (ref: http://www.linfo.org/usr_bin.html )

Попробуйте вызвать "/usr/bin/unzip" вместо unzip.

Если вызов приходит достаточно поздно и /usr/bin/ к тому времени смонтирован, а отсутствует только среда PATH, это может сработать.

1
27.01.2020, 22:16

Теги

Похожие вопросы