2013-05-31 10 views
5

Sto costruendo un bootstrap per un progetto github e mi piacerebbe che fosse un semplice one-liner. Lo script richiede una password di input.bash read viene saltato quando viene eseguito da un tubo di curl

Questo funziona e si ferma lo script di aspettare per un ingresso:

curl -s https://raw.github.com/willfarrell/.vhosts/master/setup.sh -o setup.sh 
bash setup.sh 

Questo non e solo salta sopra la richiesta di ingresso:

curl -s https://raw.github.com/willfarrell/.vhosts/master/setup.sh | bash 

setup.sh contiene codice è qualcosa di simile :

# code before 
read -p "Password:" -s password 
# code after 

E 'possibile avere una linea singola pulita? Se è così, come si potrebbe farlo?

Soluzione:

Utilizzare tre comandi invece di uscita tubazioni.

curl -s https://raw.github.com/willfarrell/.vhosts/master/setup.sh -o vhosts.sh && bash vhosts.sh && rm vhosts.sh

risposta

4

Con il tubo, il read legge dall'input standard (tubo), ma il guscio già letto tutto l'input standard quindi non c'è nulla per il read da leggere.

+0

Esiste una soluzione alternativa per acquisire un input utente quando si utilizza pipe? –

+0

Se sei sicuro che ci sia un umano lì, leggi da/dev/tty'? –

+0

Lo esaminerò. Grazie. –

Problemi correlati