tubo netcat funcionando muito cedo?

tubo netcat funcionando muito cedo?

Tenho o seguinte script rodando em segundo plano:

while true; do
    { file=$(/somescript); echo -ne "HTTP/1.0 200 OK\r\n\r\n"; cat $file; } | nc -l -p 20000
done

Funciona bem, exceto que /somescripté executado uma vez instantaneamente, antes mesmo de qualquer solicitação ser feita à porta 20000, e então espera e responde corretamente.

O que estou fazendo de errado? Deve ser executado /somescriptapenas quando houver uma solicitação 20.000

Responder1

Nota: a pergunta foi editada (pipeline revertido) depois de escrever isto. Atualizarei se encontrar tempo para fazê-lo.

Cada parte de um pipeline é iniciada simultaneamente com as outras. A única coisa que sincroniza o pipeline é a E/S, ou seja, um processo aguardando outro processo no pipeline para ler sua saída ou fornecer entrada.

Seu somescriptscript terá que esperar e observar a entrada de ncuma solicitação antes de gerar um nome de arquivo.

Não sabendo o que o script faz, só posso especular que pode haver alguns problemas de análise.

informação relacionada