Gostaria de codificar algumas entradas no meu comando bash script. Por exemplo, eu tenho um script bash como este:
#! /bin/bash
apt-get install python
e gostaria de codificar y
e enter
como entrada para o apt-get
comando neste script bash, pois em algum momento o usuário pode ser solicitado a confirmar o espaço da instalação. Eu sei que posso fazer
apt-get install python <<< "y"
passar uma entrada de string y
, mas também posso inserir um formato especial, como a nova linha "n" usando esse método? Obrigado!
Respostas:
2 para resposta № 1Todos os herestrings são automaticamente encerrados por umnova linha, portanto, isso pode não fazer o que você deseja. (Muitos programas examinam se suas entradas são provenientes de um TTY e alteram se e como são solicitados com base no resultado; outros leem prompts destinados a vir de um usuário diretamente de um TTY e, portanto, ignore totalmente o conteúdo, os heredocs e os herdeiros canalizados).
Dito isto, para uma resposta literal à pergunta:
apt-get install python <<<$"yn"
Você também pode usar um heredoc:
apt-get install python <<EOF
y
EOF
Dito isto, para o caso específico de apt-get
, não faça isso!
apt-get install -y python
... é realmente a melhor prática. (E para comandos de administração do sistema em geral, o uso em lote ou automatizado geralmente é antecipado por seus desenvolvedores, portanto, a entrada do usuário final raramente é necessária - procure na documentação de cada programa por argumentos como --batch
, --force
, --always
ou --yes
; variáveis de ambiente que especificam itens que seriam solicitados; ou comportamentos ativados por ter stdin não ser um TTY).
2 para resposta № 2
apt-get -y install python
é o caminho correto. De acordo com a página de manual:
-y, --yes, --assume-yes
Sim automático para prompts; assuma "sim" como respostaa todos os prompts e execute de forma não interativa. Se uma situação indesejável, como alterar um pacote retido, tentar instalar um pacote não autenticado ou remover um Se o pacote essencial ocorrer, o apt-get será abortado. Item de configuração: APT :: Get :: Assume-Yes.