alguma saída redirecionada é impressa no final

1

Executando alguns scripts de shell que executam scripts Python, recebo reordenamento de linhas stdout ao redirecionar para tee ou um arquivo.

Por exemplo, se eu executar o script de shell e obter a saída para o meu stdout, minha saída será semelhante a:

Line1: Starting X 
Line2: Output of X 
Line3: Starting Y 
Line4: Output of Y

Mas se eu executar o mesmo script e redirecionar a saída para o arquivo, ou usar o T, as instruções de impressão do script Python subjacente serão impressas no final da execução.

Line1: Output of X
Line2: Output of Y
Line3: Starting X
Line4: Starting Y

Existe algo que eu possa fazer para evitar isso?

    
por jpou 19.10.2016 / 11:26

1 resposta

1

Pode ser que o script Python grave em stdout e stderr, e você esteja redirecionando apenas um deles (para um arquivo ou através de tee ).

Para verificar qual saída vai para onde:

./myscript 2>/dev/null    # shows only stdout
./myscript >/dev/null     # shows only stderr

Para redirecionar os dois:

./myscript >myfile 2>&1   # both to myfile
./myscript |& tee ...     # both through tee
    
por 19.10.2016 / 19:15

Tags