到目前为止我有这个:
for each in {01..10} ; do ./sb0$each/tomcat_sb0$each start;done
这将立即启动我的应用程序,但我希望它等到读取文件中的一行,最简单的方法是什么?
答案1
while ! grep "the line you're searching for" /path/to/the.file
do sleep 10; done
for each in {01..10} ; do ./sb0$each/tomcat_sb0$each start;done
此解决方案有一个while
循环,只要文件中未找到您要搜索的行,该循环就会继续。循环仅包含sleep
10 秒,因此它会每十秒检查一次您想要的行。显然,您可以将其设置为您想要的任何值。
在给定文件中搜索grep
模式,如果没有匹配模式,则返回 false。表示!
不匹配,并且由于 not false = true,只要命令grep
返回 false,循环就会继续。
例如,如果你正在寻找以下行立即启动应用程序在文件中/var/tmp/foo.txt看起来像
while ! grep "start the apps now chuck" /var/tmp/foo.txt;
如果该行存在则答案的长度不会为零,因此条件将返回 false 并且循环将退出。