/ / String de entrada com formato em um comando bash - linux, bash

Cadeia de entrada com formato em um comando bash - linux, bash

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 № 1

Todos 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.