Ожидайте и - PullRequest
       10

Ожидайте и

0 голосов
/ 28 февраля 2012

Я пытаюсь использовать автоматическое принятие EULA, которое запрашивается в --more -.

#!/usr/bin/expect
spawn "./greenplum-perfmon-web-4.1.2.0-build-2-RHEL5-x86_64.bin"
expect "--More--"
send "q"
expect "*****"
send "yes"
expect "*****"
send ""
expect "*****"
send "yes"

Это не работает, и я не уверен, почему. Сценарий всегда останавливается при запросе --More--, и когда я нажимаю НИЧЕГО, он мгновенно обрабатывает остальную часть сценария.

Я пробовал с

expect -exact "--More--"

и

expect "the Customer"
(what is written above the --More--)

Ответы [ 2 ]

2 голосов
/ 28 февраля 2012

Попробуйте установить для $MORE что-то вроде -99999999, чтобы приглашение more никогда не отображалось.

0 голосов
/ 29 февраля 2012

Решение, полностью исключающее ожидания:

Вы можете полностью избежать этой проблемы, установив переменную окружения PAGER для другой программы и используя программу yes.Следующее отключает yes и отправляет столько yes\n строк в установщик, сколько потребуется:

PAGER=cat  yes yes | ./greenplum-perfmon-web-4.1.2.0-build-2-RHEL5-x86_64.bin

Если это кажется вам странным, это почти эквивалентно следующему:

export PAGER=cat
yes yes | ./greenplum-perfmon-web-4.1.2.0-build-2-RHEL5-x86_64.bin

Разница в том, что с однострочником PAGER устанавливается только для этой одной команды, а не для всего, что последует.

...