无法退出bash脚本中的行

无法退出bash脚本中的行,bash,Bash,我正在编写一个脚本来启动一个应用程序,grep表示“服务器启动”,退出,然后执行下一个命令。但在满足条件后,它不会退出并执行next cmd。有什么帮助吗 #!/bin/bash application start; tail -f /application/log/file/name | \ while read line ; do echo "$line" | grep "Server startup" if [ $? = 0 ] then

我正在编写一个脚本来启动一个应用程序,grep表示“服务器启动”,退出,然后执行下一个命令。但在满足条件后,它不会退出并执行next cmd。有什么帮助吗

#!/bin/bash
application start; tail -f /application/log/file/name | \
while read line ; do
        echo "$line" | grep "Server startup"
        if [ $? = 0 ]
        then
           echo "application started...!"
        fi
done
不要使用尾巴的跟随标志
Tail的follow标志(例如,
-f
)将不会退出,并将继续跟随文件,直到收到适当的信号或遇到错误条件。您需要找到一种不同的方法来跟踪文件末尾的数据,例如
watch
logwatch
,或者使用
logrotate
定期进行日志旋转。使用的最佳工具将在很大程度上取决于日志数据的格式和频率。

我在这里没有看到任何
退出。如果您试图从
循环中退出脚本,而
循环中退出脚本,那将不起作用,因为管道(带有
尾部
)使该部分在子shell中运行,而它内部的
exit
将只退出子shell,而不是执行脚本主要部分的父shell。感谢Todd。有没有关于如何编写的建议?@TeckyRA“使用的最佳工具将在很大程度上取决于日志数据的格式和频率。”如果您想要一个解决方案,而不仅仅是一个问题的解释,那么您必须使用具有代表性的预期输入和输出示例来改进OP。请参阅,以了解有关这方面的更多信息。