Como ignorar as interações do usuário em um script?

Como ignorar as interações do usuário em um script?

Estou tentando automatizar a instalação de um programa através de um script de shell. Existem algumas etapas que requerem interação do usuário a partir da linha de comando (confirmação, sim/não, etc.). Qual é a melhor maneira de contornar isso? Eu sei que uma possibilidade é usar um script esperado. Só queria saber se existe uma maneira melhor/mais limpa de fazer isso.

Responder1

Se a interação for simples, ou seja, apenas lê a entrada padrão, você pode simplesmente enviar as linhas específicas para a entrada do programa:

( echo yes ; echo 1024; echo yes ) | install.sh

Responder2

Se você quiser fazer algo que não apenas leia stdin (por exemplo, login ftp), você vai querer usaresperar.

Responder3

De outro tópico:

Se o seu comando não se importa com a rapidez com que você fornece informações e você realmente não precisa interagir com ele, você pode usar um heredoc.

Exemplo:

#!/bin/bash
command_you_want_to_execute <<EOD
interaction_1
intereaction_2
EOD

Se você precisar de ramificação com base na saída do programa, ou se o seu programa for sensível ao tempo dos seus comandos, então Expect é o que você deseja.

informação relacionada