thinomar
(usa Linux Mint)
Enviado em 05/01/2017 - 12:42h
Se a resposta for sempre a mesma, você pode usar o comando
yes , que vai mandar uma string repetidamente até acabar a execução do outro comando/script. (man:
https://linux.die.net/man/1/yes)
Exemplo, onde o apt-get irá pedir confirmação de instalação e você precisa entrar com um 'y':
yes | apt-get upgrade
Exemplo onde a resposta tem de ser 'N':
yes 'N' | comando
Se as respostas forem diferentes, você pode usar o
expect , que, como diz na própria man, é uma ferramenta de "dialogo programado com programas interativos". Resumidamente, você irá dizer pra ele o que fazer de acordo com as saídas do seu script. Você pode ver mais dele aqui
https://linux.die.net/man/1/expect e aqui
http://www.admin-magazine.com/Articles/Automating-with-Expect-Scripts .
Exemplo:
teste.sh
#!/bin/bash
read -p "Teste 1: " a
read -p "Teste 2: " b
read -p "Teste 3: " c
echo "$a - $b - $c"
Processando o script com except:
expect -c '
spawn ./teste_except.sh
expect "Teste 1: "
send "1\n"
expect "Teste 2: "
send "2\n"
expect "Teste 3: "
send "3\n"
expect eof
'
Saída final:
spawn ./teste_except.sh
Teste 1: 1
Teste 2: 2
Teste 3: 3
1 - 2 - 3
Claro que o expect possui usos muito mais avançados que isso, mas dessa forma ele já deve suprir suas necessidades.