Netcat Pipe запускается слишком рано?

Netcat Pipe запускается слишком рано?

У меня в фоновом режиме работает следующий скрипт:

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

Он работает нормально, за исключением того, что /somescriptвыполняется один раз мгновенно, еще до того, как будет сделан какой-либо запрос на порт 20000, а затем ждет и отвечает правильно.

Что я делаю не так? Он должен запускаться /somescriptтолько при запросе 20000

решение1

Примечание: Вопрос был отредактирован (перенаправление изменено) после написания этого. Я обновлю, если найду время.

Каждая часть конвейера запускается одновременно с другими. Единственное, что синхронизирует конвейер, — это ввод-вывод, т. е. процесс, ожидающий, пока другой процесс в конвейере прочитает его вывод или предоставит ввод.

Вашему somescriptскрипту придется ждать и отслеживать входные данные от ncзапроса, прежде чем выводить имя файла.

Не зная, что делает этот скрипт, я могу только предположить, что у него могут быть какие-то проблемы с синтаксическим анализом.

Связанный контент