这个问题困扰了我一整天。我有一个包含以下行的 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 &