我有这个脚本检查文件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
请告诉我是否存在语法错误或什么?
答案 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
...