¿La tubería netcat funciona demasiado pronto?

¿La tubería netcat funciona demasiado pronto?

Tengo el siguiente script ejecutándose en 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 bien, excepto que /somescriptse ejecuta una vez al instante, incluso antes de que se realice cualquier solicitud al puerto 20000, y luego espera y responde correctamente.

¿Qué estoy haciendo mal? Se supone que se ejecuta /somescriptsólo cuando hay una solicitud 20000

Respuesta1

Nota: La pregunta fue editada (canalización invertida) después de escribir esto. Actualizaré si encuentro tiempo para hacerlo.

Cada parte de una tubería se inicia al mismo tiempo que las demás. Lo único que sincroniza la canalización es la E/S, es decir, un proceso que espera a que otro proceso en la canalización lea su salida o proporcione entrada.

Su somescriptsecuencia de comandos tendrá que esperar y observar la entrada de ncuna solicitud antes de generar un nombre de archivo.

Sin saber qué hace el script, sólo puedo especular que puede tener algunos problemas con el análisis.

información relacionada