2011-09-14 12 views
11

Sto scrivendo uno script di shell Linux per automatizzare alcune cose che sto facendo su Ubuntu 11.04.Gestione delle conferme di input negli script di shell di Linux

Fondamentalmente, sto scrivendo uno script di shell per installare NGINX, MySQL e PHP, e quindi configurare tutto. So come fare tutto tramite la riga di comando.

Tuttavia, non so come gestirò le parti in cui il processo richiede l'input dell'utente. Ad esempio, alcune cose che installo con apt-get ti chiedono una conferma i.e. (Y) es o (N) o.

In che modo dovrei gestire la conferma automatica nello script della shell, ovvero confermare automaticamente Sì o No quando richiesto?

+0

Duplicato? http://stackoverflow.com/questions/226703/how-do-i-prompt-for-input-in-a-linux-shell-script (spero che aiuti!) – heltonbiker

+0

@heltonbiker: Non sto cercando di ottenere input da parte dell'utente dello script di shell, sto cercando di forzare/apportare input ovunque il mio script di solito mi ha spinto a fornire una risposta Sì o No. –

+0

Hai ragione, ho letto male, mi dispiace. – heltonbiker

risposta

15

yes | ./script risponderà a per tutto.

In caso contrario, scrivere uno script che stampa le risposte desiderate, ad esempio:

echo N 
echo Y 
echo Y 
+1

Grazie per questa opzione. Non sono sicuro di come strutturare esattamente lo script per farlo, hai un esempio di codice? –

+0

Se non si desidera rispondere sempre a "sì", in realtà non si ottiene la domanda, poiché è completamente dipendente dal caso. Se vuoi rispondere "sì sì no" a uno script, semplicemente: 'printf" y \ ny \ nn \ n "| ./your_script' o scrivi un semplice script con linee separate per stampare ogni risposta, quindi: './answer_script | ./the_script' – wormsparty

+0

Grazie mille. Suppongo di avere più opzioni ora solo nel caso in cui voglio rispondere in modo diverso a diversi prompt. Questo sembra essere il modo più elegante per fare ciò che voglio fare, dato che ho solo bisogno di chiamarlo una volta con lo script. –

4

In genere è possibile chiamare tali programmi interattivi con un'opzione per rispondere automaticamente sì a tutte le domande. Ad esempio, è possibile chiamare apt-get con -y. Dalla pagina man:

-y, --yes, --assume-yes Sì automatico a richiesta; assumere "sì" come risposta a tutti i prompt ed eseguire in modo non interattivo.

+0

Grazie. Questo era proprio quello che stavo cercando. –

1

Prova Expect potrebbe essere quello che stai cercando.

+0

Grazie mille per questo, sembra molto interessante. Dovrei sapere esattamente quale sarà il prompt, ad esempio se il comando che eseguo nel mio script di shell farà qualcosa come "Inserisci la tua data di nascita:", dovrei scrivere Expect "Inserisci la tua data di nascita : "esattamente come lo chiederà il prompt ?! –

+0

Per quanto ne so - si – LordDoskias

Problemi correlati