尾-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
我 运行 来自 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