TCP 서버에 JSON을 쓰는 간단한 줄이 있습니다.
echo "{\"some\":\"json-data\"}" > /dev/tcp/localhost/9091 > cat
일부 연결이 생성되고 데이터가 터미널/tty로 파이프될 것이라고 생각했지만 이것이 작동하지 않고 해당 줄을 건너뛰고 bash 스크립트가 즉시 완료됩니다.
나는 또한 다음을 시도했습니다.
echo "{\"some\":\"json-data\"}" > /dev/tcp/localhost/9091 | tail -f
내 TCP 서버에서는 연결이 되지만 파이프가 매우 빨리 끊어집니다.
TCP 서버에서 bash 스크립트로 데이터를 스트리밍하기 위해 bash 명령을 작성하는 방법은 무엇입니까?
답변1
영구 FD를 엽니다. 이것은 bash에서는 매우 어색합니다. 사람들은 종종 파일 번호를 수동으로 할당하게 됩니다.
exec 3<>/dev/tcp/localhost/9091
echo "{\"some\":\"json-data\"}" >&3
cat <&3
위의 내용은 응답을 보낸 후 소켓이 닫혔다고 가정합니다.