Я чувствую себя немного глупо, спрашивая об этом, но здесь все идет.
Я пытаюсь реализовать очень простой ftp-клиент в bash, для целей тестирования, и подумал, что могу использовать чистый подход при чтении / записи из / в сокет с использованием exec
и подстановке процесса следующим образом.
exec 3<> /dev/tcp/$host/$port
exec 4< <(dos2unix <&3)
exec 5> >(unix2dos >&3)
Затем я бы прочитал из fd 4
и записал в fd 5
в для отправки команд и получения ответов.
Увы, хотя запись работает как талисман, чтение не делает: dos2unix
просто застревает, как будто ожидает ввода, который никогда не поступит. Использование любой другой команды вместо dos2unix
показывает то же поведение, но с использованием устройства с реальными символами вместо /dev/tcp
, скажем /dev/urandom
, работает как ожидалось.
Am Я делаю что-то в корне неправильно, или в чем проблема?