Consegui resolvê-lo com uma abordagem de tela. Isso é executado em segundo plano e eu não vejo o progresso, mas isso é ok para mim
screen -d -m -S umake-eclipse
screen -S umake-eclipse -p 0 -X stuff "umake ide eclipse\n\n"
Estou tentando automatizar minha configuração do Ubuntu com um script bash e tenho o seguinte problema:
Eu quero que o script envie automaticamente um pressionamento de tecla enter , ao executar umake ide eclipse
(isso instala o eclipse ide do terminal).
Esta é a saída padrão, quando executado a partir do terminal sem um script:
$ umake ide eclipse
Choose installation path: /home/gn4i/.local/share/umake/ide/eclipse
<need to press enter>
Downloading and installing requirements
Normalmente eu faria isso com echo | umake ide eclipse
, mas sempre recebo o seguinte erro
$ echo | umake ide eclipse
Choose installation path: Choose installation path: ERROR: Unhandled exception
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/umake/tools.py", line 158, in wrapper
function(*args, **kwargs)
File "/usr/lib/python3/dist-packages/umake/ui/__init__.py", line 42, in display
cls.currentUI._display(contentType)
File "/usr/lib/python3/dist-packages/umake/ui/cli/__init__.py", line 61, in _display
contentType.run_callback(result=rlinput(contentType.content, contentType.default_input))
File "/usr/lib/python3/dist-packages/umake/ui/cli/__init__.py", line 41, in rlinput
return input(prompt + " ")
EOFError: EOF when reading a line
Como posso automatizar esta instalação?
Usando um script expect
muito simplista:
spawn umake ide eclipse
expect "Choose installation path:" { sleep 1; send "\r" }
Executando:
$ expect -f script.expect
@ A resposta de Kusalananda não funcionará na prática, pois a execução do comando umake
pára após o comando send
.
Aqui está uma solução de trabalho estendida:
#!/usr/bin/expect
spawn umake ide eclipse
expect "Choose installation path:" { send "\r" }
interact
Tags bash python python3 shell shell-script