Para garantir que o comando não esperará pela entrada interativa, bastará redirecionar sua entrada de algum lugar. A maioria dos programas como o que você descreve saem assim que atingem o final da entrada padrão, portanto, se você não quiser que o programa faça nada, exceto seu trabalho inicial, passe-o para a entrada vazia.
thatcommand </dev/null
Se você quiser passar alguma entrada fixa, você pode usar um documento aqui .
thatcommand <<EOF
Q
EOF
Você pode incluir variáveis em um documento aqui também. Se a entrada precisar ser construída de forma mais dinâmica, você pode canalizar qualquer código de shell que desejar.
{
# complex shell code goes here
echo Q
} | thatcommand
Eu assumo que o programa lê a partir da entrada padrão. Alguns programas forçam a leitura do terminal, portanto, o redirecionamento de entrada não funciona neles. Nesses casos, você precisa de uma ferramenta como espera . Esperar também é útil se a entrada que você precisa alimentar para o programa depender de alguma saída anterior.