TCPソケット接続から端末へのデータパイプ

TCPソケット接続から端末へのデータパイプ

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

上記は、応答を送信した後にソケットが閉じられたと仮定しています。

関連情報