Pergunta

Se eu tenho este app perl:

print `someshellscript.sh`;

que imprime monte de coisas e leva muito tempo para ser concluído, como posso imprimir essa saída no meio da execução do script shell?

Looks como Perl só irá imprimir o resultado someshellscript.sh quando ela for concluída, existe uma maneira de fazer corar de saída no meio da execução?

Foi útil?

Solução

O que você provavelmente quer fazer é algo como isto:

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

Este é executado someshellscript.sh e abre um tubo que lê sua saída. O loop while lê cada linha de saída gerado pelo script e imprime-lo. Veja a href="http://perldoc.perl.org/functions/open.html" página de documentação aberta para obter mais informações.

Outras dicas

O problema aqui é que escapar com acentos graves armazena seu script a uma corda, que você, em seguida, imprimir. Por esta razão, não haveria maneira de "lavar" com impressão.

Usando o comando () sistema deve imprimir a saída de forma contínua, mas você não será capaz de capturar a saída:

system "someshellscript.sh";
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top