Ошибка при выполнении команды оболочки adb

Если оболочка запущена в окне терминала gnome , затем перейдите в меню:Edit| Preferences| Profilesи выберите профиль, затем выберите вкладку Compatibilityи измените Delete key generatesна Automatic. (Или, если это не помогло, попробуйте другие варианты.)


Кроме того, вы можете ввести ^v Delи ^v Backspace, (, т.е. Control -v с последующим нажатием клавиши удаления и Control -v с последующим нажатием клавиши Backspace ), чтобы найти возвращенный «терминальные» коды последовательности.


А для проверки используйте командуshowkeyкак showkey -s, showkey -kи/или showkey -a(, т.е. три слоя ), а затем нажмите клавиши Delи Backspaceдля:

I )необработанный вывод с клавиатуры
II )вывод драйвера tty
III )строки символов, передаваемые терминалу (ansi )


Из этого я заметил, что при использовании stty (, например. stty1 ), что поведение моей оболочки отличается от поведения при использовании xterm (из графического X-терминала ). Del правильно удалил вперед (вправо )в stty1, но назад (влево )в моем xterm.

2
26.08.2020, 13:44
1 ответ

Команда выполняется оболочкой на Android, поэтому задействованы две оболочки :локальная оболочка, в которой вы ее вводите, и оболочка на Android, которая adb shellвызывает. Поэтому вам нужно дважды заключать специальные символы в кавычки, если они должны проходить через обе оболочки.

Было бы менее ошибочно написать команду как

adb shell 'am broadcast -a com.test.app --es command STOP --es filename sample 1.01.49 7-09-1380(01).apk'

Это приводит к выполнению следующей команды оболочки на Android:

am broadcast -a com.test.app --es command STOP --es filename sample 1.01.49 7-09-1380(01).apk

Но на самом деле вы хотите выполнить что-то вроде

am broadcast -a com.test.app --es command STOP --es filename "sample 1.01.49 7-09-1380(01).apk"

Поэтому вам нужно, чтобы локальная команда выглядела примерно так

adb shell 'am broadcast -a com.test.app --es command STOP --es filename "sample 1.01.49 7-09-1380(01).apk"'
2
18.03.2021, 23:09

Теги

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