paulo1205
(usa Ubuntu)
Enviado em 09/03/2022 - 00:40h
lacerdat25 escreveu:
Boa noite!
Preciso de um help, estou dando um cat num arquivo de log buscando a ultima linha, comando:
log=$(cat /opt/log/var.log | tail -1)
Em vez de “
cat xxx | tail -1”, não é mais simples fazer diretamente “
tail -1 xxx”? Além de economizar um processo, uma execução de comando externo e a passagem de dados entre dois programas, você permite que uma versão potencialmente otimizada do tail não precise varrer o arquivo inteiro para chegar à última linha, mas eventualmente já consiga começar a ler perto do fim do arquivo, onde estará a informação que você deseja.
preciso pegar esse cara e validar om uma string, caso as 2 estejam OK, show, em caso de erro preciso parar um serviço;
meu problema e na comparação das strings, alguém poderia me dar um help please?
Como você sabe que o problema é na comparação, e não, por exemplo, na fonte dos dados (talvez com uma linha em branco após a mensagem que você quer, ou eventuais ocorrências de múltiplos espaços onde você esperaria ver apenas um), ou na própria mensagem que você está procurando (talvez o tamanho original nem sempre seja exatamente 7200000, se houver variação entre uma execução e outra)?
Cuidado porque falar em erro na comparação só faria sentido se você soubesse que o conteúdo é igual (caráter a caráter, incluindo espaços e outros caracteres invisíveis ou pouco visíveis) mas o script executar o código como se fosse diferente, ou vice-versa.
Uma sugestão de depuração é você imprimir o conteúdo da variável
log antes da comparação, para ter certeza de que não está usando um conteúdo diferente do esperado, e tirando conclusões equivocadas.
Outra possibilidade de depuração é ligar os atributos de depuração do shell (
-x e
-v) e ver na saída de depuração exatamente o que é passado argumentos ao comando interno
[[.
... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)