Sto cercando di capire come essere avvisato che sono stati raggiunti più stadi in una serie di comandi inviati.
Per motivi di discussione, diciamo che ho un comando simile in modo che qualsiasi parte di essa potrebbe richiedere molto tempo. Voglio essere avvisato quando ogni "stage" è completato facendo sì che lo script dica qualcosa.
netstat -a | stage_complete.sh "netstat" | grep -v WAIT | stage_complete.sh "grep done"
dove stage_complete.sh è un semplice script di bash per say
il testo dell'argomento e passa lo stdin allo stdout.
stage_complete.sh
OUT=$*
say "$OUT"
cat /dev/stdin
Questa idea funziona bene - tranne che dire non "aspetta" che la parola termini - inizia a dire la frase, e poi continua immediatamente, quindi se i miei comandi scorrono velocemente, allora dice "netstat" e "grep done" allo stesso tempo, sovrapponendosi a vicenda.
Come posso fare in modo che say
aspetti? o farla accodare al testo e dirlo solo una volta completato il testo precedente? Nota che ho notato che comandi come questi si aspettano l'un l'altro per completare:
say one && say two && say three
ma non riesco a vedere come farlo funzionare nei miei tubi!