无法退出bash脚本中的行
我正在编写一个脚本来启动一个应用程序,grep表示“服务器启动”,退出,然后执行下一个命令。但在满足条件后,它不会退出并执行next cmd。有什么帮助吗无法退出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
#!/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。请参阅,以了解有关这方面的更多信息。