通过 bash 脚本进行 netcat 和 tee 重定向

通过 bash 脚本进行 netcat 和 tee 重定向

这个问题困扰了我一整天。我有一个包含以下行的 bash 脚本:

nc -l 8044 | tee nc-output &

netcat 的输出从未写入 nc-output。如果我在 bash 脚本之外运行该行,它就会起作用。

nc -l 8044 > afile &

也不起作用,但是在 bash 脚本之外起作用。

我需要那里的 & 符号,这样我就可以单独运行该过程并继续执行批处理脚本。任何建议都很好!

谢谢!

答案1

问题是,一旦 nc 接受连接,它就会尝试从 stdin 读取。当您将其作为 bash 脚本运行时,它总是会立即读取 EOF 并关闭连接,而当您在脚本之外运行它时则不会发生这种情况。

使用-d开关阻止 nc 从 stdin 读取。

nc -d -l 8044 > afile &

相关内容