Prevedere script all'interno dell'istruzione facoltativa script bash


0

usando: CentOS 6.2 BASH shell

La mia sceneggiatura è qualcosa del genere

#!/bin/bash
INSTALL_PATH="Enter install path"
CR="\n"
/bin/su root -c "/usr/bin/expect << EOF
spawn name.run
expect $INSTALL_PATH
send $CR
EOF; ... do more stuff..."

Ora a volte il mio file name.run chiede "Vuoi disinstallarlo?" come posso inviarlo come argomento opzionale dopo il primo invio?


anche chiesto su StackOverflow - stackoverflow.com/q/10150939/7552
Glenn Jackman

Risposte:


3

È possibile inserire più motivi all'interno di un expectcomando

spawn name.run
expect $INSTALL_PATH
send \r
expect {
  {Would you like to uninstall?} {
    send yes\r
    exp_continue 
  }
  eof 
}

Si noti che si invia "\ r" a "premi invio".

Inoltre, la parola chiave per un here-doc deve apparire da sola su una riga - non può essere seguita da "; more stuff"


Bene, lo proverò e ti risponderà se funziona come sto girando.
Jason R. Mick,

Ho ricevuto un "invalid command name "/usr/bin/expect"... sembra che l'EOF (vedi sopra) venga ignorato con l'aspettativa condizionale ignorata. Devo mantenere un secondo EOF dopo la parentesi graffa di chiusura ??
Jason R. Mick il

1
il minuscolo eofche ho nella mia risposta è per aspettarsi. Il maiuscolo EOFnella tua domanda è che la shell termini il here-doc
glenn jackman,

Ah, quindi in altre parole ho bisogno di entrambi, giusto? (Il EOFper il qui-doc e il eofper lo script di attesa incorporato, giusto?) Apprezzo molto l'aiuto! Sto per provarlo ora ...
Jason R. Mick,

WOOO! Una volta ho aggiunto che EOF ha funzionato come un incantesimo. Il tuo aspettativo condizionale, combinato con la correzione del timeout di Niall Byrne, ha fatto funzionare perfettamente lo script .... l'installazione involontaria di CUDA funziona perfettamente. :) Ecco il post di Byrne: stackoverflow.com/questions/10150939/…
Jason R. Mick
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.