Domanda

Se ho questa applicazione perl:

print `someshellscript.sh`;

che stampa mucchio di roba e richiede molto tempo per completare, come posso stampare che di uscita nel bel mezzo di esecuzione dello script di shell?

appare come Perl servirà solo a stampare il risultato someshellscript.sh quando completa, c'è un modo per fare filo di uscita nel bel mezzo di esecuzione?

È stato utile?

Soluzione

Quello che probabilmente vuole fare è qualcosa di simile a questo:

open(F, "someshellscript.sh|");
while (<F>) {
    print;
}
close(F);

Questa corre someshellscript.sh e si apre un tubo che legge la sua uscita. Il ciclo while legge ogni riga di output generato dallo script e lo stampa. Vedere la aprire pagina di documentazione per ulteriori informazioni.

Altri suggerimenti

Il problema qui è che la fuga con apici inversi memorizza lo script a una stringa, che quindi si stampa. Per questo motivo, non ci sarebbe alcun modo per "irrigare" con la stampa.

Utilizzando il comando () sistema dovrebbe stampare l'output in modo continuo, ma non sarà in grado di catturare l'output:

system "someshellscript.sh";
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top