无名[] 2022-12-27 20:35 采纳率: 25%
浏览 39
已结题

sell脚本如何读取日志文件最后一行并判断该行文本是否与字符串“started”相等

启动.sh脚本,会读取日志文件第一行,然后进行判断,现在需要读取日志文件里面的最后一行信息然后判断,对脚本了解一点点,请问一下各位该如何实现啊 ,我想用tail -n -1 log/server.log去直接获取最后一行的信息,但是如何赋值判断呢

start()
{ whlie ture 
            do
                  test -s $logFile
                  if test $? -eq 0
                   then
                    echo "the fiile log/server.log" is address"
                                                cat $logFile | while read line
                                                do
                                                        echo "the line is [$line]"
                                                        test "$line" = "started"
                                                        if test $? -eq 0
                                                                  then
                                                                  echo " $[NAME]" successfully!"
                                                      exit 0
                                                else
                                                       echo "$[NAME] Fail!"
                                                        exit 0
                                                fi
                                          done
                                      break
                          else
                                                      slepp 2
                                      continue
                           fi
        done
                              
}

以前的代码是这样

  • 写回答

1条回答 默认 最新

  • |__WhoAmI__| 2022-12-27 20:42
    关注

    可以使用 tail 命令来实现,例如:

    tail -n 1 log/server.log
    

    该命令会读取日志文件 log/server.log 的最后一行信息。

    然后可以将读取到的信息赋值给一个变量:

    last_line=$(tail -n 1 log/server.log)
    

    然后就可以使用该变量来进行判断了例如:

    if [ "$last_line" == "started" ]; then
        echo "$[NAME] successfully!"
    else
        echo "$[NAME] Fail!"
    fi
    

    在使用 tail 命令时,如果你想要读取倒数第二行,可以使用 tail -n 2,如果想要读取倒数第三行,可以使用 tail -n 3,以此类推。
    在使用 if 语句时,注意使用两个中括号,否则会报错。
    望采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月5日
  • 已采纳回答 12月28日
  • 创建了问题 12月27日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?