read
lê stdin por padrão. Simplesmente alimente algo lá.
echo -e '\n\n' | blah/blah/blah install
blah/blah/blah install <<< $'\n\n'
Há um script em execução que instala um serviço. Ele tem alguns comandos read
.
Gostaria de executá-lo como parte de um script de instalação maior (na verdade, capistrano, mas isso não importa) e pré-preencher as partes "lidas" com valores, em vez de bloquear todo o processo.
O script é executado com um único comando, digamos blah/bin/blah install
, gostaria de fornecer entrada no comando, como input first_input, second_input | blah/bin/blah install
Partes relevantes do script:
if [[ $NEO4J_USER == $wrapper_user ]]; then
default_user=$wrapper_user
else
default_user="neo4j"
fi
######### read:
read -p "Graph-like power should be handled carefully. What user should run Neo4j? [$default_user] " proposed_user
proposed_user=${proposed_user:-$default_user}
if ! 'id $proposed_user &> /dev/null' ; then
######### read:
read -p "User \"$proposed_user\" does not yet exist. Shall I create the account for you? [Yn]" yn
case $yn in
[Nn]* ) echo "WARNING: Alright, but Neo4j will fail to launch until that user has been created."
set_user $proposed_user
;;
* ) create_user $proposed_user
;;
O script inteiro está no link
Eu sei que posso alterar o script, mas quero apenas preencher os valores. É possível?
Bem, na verdade, importava eu usar o capistrano porque ele tem a habilidade de enviar entrada (veja a seção &block
).
Mas é interessante saber se a funcionalidade que mencionei também existe no bash.