перенаправить как стандартный ввод, так и стандартный вывод

Я хотел бы делегировать netcat stdin и stdout функции.

Я могу сделать следующее, чтобы перенаправить только стандартный вывод

nc -l -p 1234 | my_function

Я могу сделать следующее, чтобы перенаправить только стандартный ввод

nc -l -p 1234 < <(my_function)

person Francis    schedule 12.06.2014    source источник
comment
должно быть легко выполнить проводку с python/perl/ruby, но я думаю, что это также выполнимо с bash... возможно, с именованными каналами?   -  person Karoly Horvath    schedule 12.06.2014
comment
возможный дубликат как перенаправить stdout 2-го процесса вернуться к stdin 1-го процесса?   -  person Karoly Horvath    schedule 12.06.2014


Ответы (1)


Когда my_function обернут как исполняемая форма (файл), вы можете использовать опцию -e netcat:

nc -l -p 1234 -e my_function

Однако, если это функция в bash, начиная с Bash 4.0, вы можете использовать coproc:

coproc my_function
nc -l -p 1234 <&"${COPROC[0]}" >&"${COPROC[1]}"
person konsolebox    schedule 12.06.2014