É possível fazer com que um script bash manipule automaticamente os prompts que normalmente seriam apresentados ao usuário com ações padrão? Atualmente, estou usando um script bash para chamar uma ferramenta interna que exibirá prompts para o usuário (solicitando S / N) para concluir as ações, no entanto, o script que estou escrevendo precisa ser completamente "sem intervenção", Preciso de uma forma de enviar Y|N
ao prompt para permitir que o programa continue a execução. Isso é possível?
109
yes
para fazer isso: unix.stackexchange.com/questions/47344/…Respostas:
Isso não é "autocompletar", é automação. Uma ferramenta comum para essas coisas é chamada Expect .
Você também pode se safar apenas com a entrada de tubulação de
yes
.fonte
yes
resolveu, felizmente todos os prompts exigiam apenas um 'y' de qualquer maneira. Obrigado.Yes | command
pode não funcionar sempre. Se for apenas para fins de instalação, então acho que-y
é uma opção melhor e preferida.Um simples
Isso permite que você passe qualquer sequência de "S" ou "N" para o seu script.
fonte
N
, teria usado esse método, mas só precisava de Ys, então continueiyes
. Pena que não posso aceitar duas respostas, pois ambas estão corretas.N
agora você tem uma boa maneira de fazê-lo."Y N"
como entrada para o primeiro prompt e ficará suspenso no segundo prompt, esperando que eu o conclua. Eu tentei mudar os espaços para novas linhas, mas também não funcionou, ainda deu uma string literal para o prompt.printf 'y\ny\ny\n' | ./your_script
. Desta forma, você está inserindo manualmente a nova linha para cada entrada esperada.printf '%s\n' Y Y N N Y N Y Y N
coloca novas linhas entre os itens, mas sem precisar de uma string de formato grande.Descobri que a melhor maneira de enviar entrada é usar cat e um arquivo de texto para transmitir qualquer entrada de que você precisa.
fonte
Se você só tem Y para enviar:
Se você tiver apenas N para enviar:
fonte
Na minha situação, precisei responder a algumas perguntas sem S ou N, mas com texto ou em branco. Descobri que a melhor maneira de fazer isso na minha situação era criar um arquivo shellscript. No meu caso, chamei de autocomplete.sh
Eu estava precisando responder a algumas perguntas de um exportador de esquema de doutrina, então meu arquivo ficou assim.
- Este é apenas um exemplo -
O que eu gosto nessa estratégia é que você pode comentar quais são suas respostas e, usando EOF, uma linha em branco é apenas isso (a resposta padrão). Acontece que essa ferramenta exportadora tem sua própria versão JSON para responder a essas perguntas, mas descobri isso depois de fazer isso =).
para rodar o script simplesmente esteja no diretório que você deseja e rode
'sh autocomplete.sh'
no terminal.Resumindo, usando << EOL & EOF em combinação com Return Lines, você pode responder a cada pergunta do prompt conforme necessário. Cada nova linha é uma nova resposta.
Meu exemplo apenas mostra como isso pode ser feito com comentários também usando o caractere `para que você se lembre de cada etapa.
Observe que a outra vantagem deste método é que você pode responder com mais do que apenas S ou N ... na verdade, você pode responder com espaços em branco!
Espero que isso ajude alguém.
fonte
Existe um utilitário especial para isso - ' sim '.
Para responder a todas as perguntas com a mesma resposta, você pode executar
Ou você pode colocá-lo dentro do seu script para ter uma resposta específica para cada pergunta
fonte