Ожидайте выписки - PullRequest
       9

Ожидайте выписки

0 голосов
/ 23 сентября 2018

Я пытаюсь сопоставить подсказку, но оператор OR внутри круглых скобок (%|#) не работает.

Следующее РАБОТАЕТ только для% окончания приглашений и НЕ РАБОТАЕТ с # окончанием приглашений:

set FULLPROMPT "${HOST} (.+)(%|#) $"

Следующее НЕ РАБОТАЕТ ни для какого приглашения: /:

set FULLPROMPT "${HOST} (.+)% $"

Я явно что-то упускаю.

Подсказки могут быть такими

12:33 user@hostname ~%
12:33 root@hostname /usr/local/folder#

Ожидается, что

set HOST "hostname"
set FULLPROMPT "${HOST} (.+)(%|#) $"
send "\n"
expect -re $FULLPROMPT

Любая помощь будет принята с благодарностью

1 Ответ

0 голосов
/ 23 сентября 2018

Благодаря Schelte Bron я теперь могу точно видеть, как регулярное выражение соответствует подсказкам.Оказывается, что подсказка имеет цвета, и это помещает все виды символов до и после % или #.

. Чтобы преодолеть это, вы можете либо

  1. переопределитьPS1-переменная подсказки
  2. позаботится обо всех скрытых символах подсказки в регулярном выражении
  3. захватывает подсказку при входе в систему и использует ее в регулярном выражении (похоже, что мы ДОЛЖНЫ делать, но это кажетсямного работы)

Выполнить ожидание в режиме отладки:

expect -d 
...