尾-f | grep 在 if 语句中

tail -f | grep in if statement

我 运行 来自 bash 类似

的脚本
$(command -options)&
export SC_PID=$!    
if tail -f <log_filename.txt> | grep --line-buffered -E "(some expression)"; then
        kill -STOP $SC_PID
fi

但它在命令行输出中写入 "(some expression)" 而不是终止进程。请注意,log_filename.txt 是一个日志文件,其中实时写入了 $(command -options) 的输出。我做错了什么?

你的烟斗 (tail -f ... | grep ...) 永远不会结束。

-m 1 添加到您的 GNU grep 以在第一次匹配后退出。

您的带有“tail -f”的 if 语句在您中断之前无法完成,因此它无法进入下一步。尝试按通道拆分文本,如下所示:

$(command -options)&
export SC_PID=$!    
tail -f <log_filename.txt)|while read; do
  if (echo "$REPLY"|grep --line-buffered -E "(some expression)"); then
    kill -STOP $SC_PID
  fi
done