Se o comando não for muito exigente, deve funcionar com algo assim:
command > /dev/null << EOF
<answer 1>
<answer 2>
<answer 3>
EOF
Isso requer que você saiba as respostas exatas de antemão.
Digamos que eu queira escrever um script de shell que execute apenas um comando. Mas esse comando é mal projetado. Não oferece opções de linha de comando; em vez disso, ele faz algumas perguntas e aguarda a entrada do usuário.
Existe uma maneira de preparar essa entrada no script para que as perguntas sejam respondidas automaticamente?
A expectativa pode fazer isso. Do site :
Expect is a tool for automating interactive applications such as telnet, ftp, passwd, fsck, rlogin, tip, etc. Expect really makes this stuff trivial. Expect is also useful for testing these same applications [...]"
Ele vem com muita ajuda, como autoexpecta .
Novamente no site da Espera,
autoexpect watches you interacting with another program and creates an Expect script that reproduces your interactions. For straightline scripts, autoexpect saves substantial time over writing scripts by hand.
Se o seu script espera um prompt respondido ou vários prompts nos quais você pode dar a mesma resposta, há yes
:
NAME
yes - output a string repeatedly until killed
SYNOPSIS
yes [STRING]...
yes OPTION
DESCRIPTION
Repeatedly output a line with all specified STRING(s), or 'y'.
Use assim:
yes Me | give_a_hug.sh
Tags shell shell-script