Cygwin cigstart 和 mintty 没有将 tail -f 写入管道到 grep 到文件

Cygwin cigstart and mintty not writing tail -f piped to grep to file

我正在尝试创建一个 运行 进程的 .sh 文件,然后将一些日志记录输出写入一个单独的文件。除了让 cygwin 实际写入文件的方法之外,我几乎所有的东西都在工作。以下两个都显示一个新的 cygwin window 并且似乎遵循日志文件但都没有写入输出文件:

cygstart tail -f ./logs/full-log.txt | grep --line-buffered "LOG_FILE:" > ./logs/lrp-log.txt
mintty tail -f ./logs/full-log.txt | grep --line-buffered "LOG_FILE:" > ./logs/lrp-log.txt

以下有效,但我想将其合并到我的较大脚本中,因此我需要以某种方式在后台将其发送到 运行,以便我的脚本可以继续。

tail -f ./logs/full-log.txt | grep --line-buffered "LOG_FILE:" > ./logs/lrp-log.txt

我怀疑

cygstart tail -f ./logs/full-log.txt | grep --line-buffered "LOG_FILE:" > ./logs/lrp-log.txt

表示:

{ cygstart tail -f ./logs/full-log.txt; } | grep --line-buffered "LOG_FILE:" > ./logs/lrp-log.txt

即你是 运行:

{ cygstart tail } | grep

而不是你想做的:

cygstart { tail  | grep }

如果您只是想修改 shell 脚本以将 tail | grep 置于后台,那么这可能就是您真正需要的:

( tail -f ./logs/full-log.txt | grep --line-buffered "LOG_FILE:" > ./logs/lrp-log.txt; ) &