Netcat-Pipe läuft zu früh?

Netcat-Pipe läuft zu früh?

Bei mir läuft folgendes Skript im Hintergrund:

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

Es funktioniert einwandfrei, außer dass es /somescripteinmal sofort ausgeführt wird, bevor überhaupt eine Anforderung an Port 20000 gestellt wird, und dann wartet es und antwortet korrekt.

Was mache ich falsch? Es soll /somescriptnur laufen, wenn eine Anfrage 20000 vorliegt

Antwort1

Hinweis: Die Frage wurde nach dem Schreiben bearbeitet (Pipeline umgekehrt). Ich werde sie aktualisieren, wenn ich Zeit dazu finde.

Jeder Teil einer Pipeline wird gleichzeitig mit den anderen gestartet. Die Pipeline wird nur durch I/O synchronisiert, d. h. ein Prozess wartet darauf, dass ein anderer Prozess in der Pipeline seine Ausgabe liest oder Eingaben bereitstellt.

Ihr somescriptSkript muss warten und die Eingabe nceiner Anforderung überwachen, bevor es einen Dateinamen ausgibt.

Da ich nicht weiß, was das Skript macht, kann ich nur spekulieren, dass es möglicherweise Probleme beim Parsen gibt.

verwandte Informationen