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
上記は、応答を送信した後にソケットが閉じられたと仮定しています。