Я использую сценарий expect
для установки некоторых пакетов. Во время таких установок иногда запрашивает разрешения: Y/n
, чтобы установить их, а иногда нет.Как продолжить, если ожидаемая строка не отображается?
У меня 2 вопроса:
1) Как заботиться о обоих этих случаях?
#!/usr/bin/expect --
# This is for boto libraries installation
spawn apt-get install python-pip
expect {
"Do you want to continue"
{ send "Y\r\n" ## HERE SOMETIMES THIS STRING MAY NOT APPEAR
}
}
interact
spawn pip install filechunkio
interact
spawn pip install -U boto
interact
Когда ожидаемая строка не появляется, он выдает сообщение об ошибке, как
spawn_id: spawn id exp6 not open
while executing
"interact"
(file "./botoInstall.exp" line 10)
линии 10 является первым взаимодействуют.
2) Здесь что означает spawn_id: spawn id exp6 not open
?
Проходит ли '-y'' apt-get' не делать то, что вы хотите здесь, без всего этого беспорядка? По крайней мере, для шага 'apt-get'. –
За 1) см. Ответ Динеша. Для 2) это потому, что ожидаемая строка не отображалась, поэтому команда 'expect' возвращалась только на' timeout' или 'eof'. Так как команда 'apt-get' обычно заканчивается очень быстро (<10 с), поэтому команда' expect' увидит 'eof', что означает, что порожденный процесс' apt-get' уже вышел, поэтому команда 'interactive' определенно завершится неудачей , – pynexj