Ubuntu下bash运行:
我有一个源可以生成一些输出,但不是立即生成。让我们假设它是第一个在套接字上侦听的 netcat:netcat -l 12345。
我想将其通过管道传输到传出的 netcat(通过 TCP 连接),例如netcat -l 12345 | netcat localhost 54321。但棘手的一点是,我知道当我运行命令时,本地主机 54321 上没有任何东西监听传入连接,但我知道当第一个实际字符通过管道到达时将会有一个监听。
所以我的问题是:有没有办法:
提前致谢!
编辑:实际上,源比 netcat 更复杂,即它是一个通过各种流修改进行管道传输的监听 netcat。
使用您已经做过的研究以及我评论过的研究(不知道这是对您自己问题的答案),以下是完整的delayed_netcat.sh:
#!/bin/bash
read line
netcat "${@}" < <(echo $line ; cat)
Run Code Online (Sandbox Code Playgroud)
首先等待一行输入,然后使用简单的echo“新生成”输入将该行添加到实际的netcat. stdin 的其余部分只是使用cat它进行重定向stdin,并将其添加到 的输入中netcat。它还支持将命令行选项和参数传递给“real” netcat。
用法如下:
netcat -l 12345 | cmd1 | cmd2 | ... | ./delayed_netcat.sh localhost 54321
Run Code Online (Sandbox Code Playgroud)
延迟netcat直到读取第一行。如果您确实想在读取第一个字符后开始它,read则echo需要一些重写。