用于检查日志和运行程序的Shell脚本

时间:2011-09-30 10:09:43

标签: shell unix

我有这个脚本检查文件newlog.log的最后一行,如果它找到单词Stream closed那么它应该运行程序test.jar,因为它会停止并因此写入{{ 1}}在日志文件中。

Stream closed

我得到的错误是:

#!/bin/sh
SUCCESS=0 
while (true);
do
sleep 5
tail -1 ~newlog.log | grep -q "Stream closed" .
if  [$? -eq 1]
then 
java -jar test.jar &
fi
done

请告诉我是否存在语法错误或什么?

3 个答案:

答案 0 :(得分:0)

我认为你可以使用

tail -f file.log

答案 1 :(得分:0)

不使用grep命令的Exit Status,而是将输出存储在变量中并循环,直到它的长度为非零。

Grep将返回0的退出状态,即使它没有返回任何输出。

VAR1 = tail -1 ~newlog.log | grep -q "Stream closed"

直到[-n“$ {var1}”];

DO

  echo "Sleeping for next 5 seconds"

  sleep 5

完成

java -jar test.jar &

答案 2 :(得分:0)

由OP引起的原始错误'[1'没有在if语句的方括号周围放置空格。

似乎tail命令返回退出代码1。 if语句应该是

if [ $? -eq 1 ]
then

...

if [$? -eq 1]
then

...