Eu tenho um script bash (apenas fazendo algumas correspondências de padrões de arquivo de log simples) que eu tenho rodando em um cron por alguns anos. Recentemente quebrou e começou a retornar resultados estranhos. Após cavar o script e fazer algumas depurações nele, descobri que o problema parece ser com um loop while que faço em um arquivo.
Para ilustrar o problema, eu fiz um cat no arquivo 'cat / var / tmp / file' e obtive o que espero obter, que é um registro de data e hora e alguns IDs (não formatados):
15:56:14,965 [,PCC12345678(PSI12345678),,]
18:08:43,706 [,PCC23456789(PSI23456789),,]
12:01:49,233 [,PCC34567891(PSI34567891),,]
Quando eu coloco isso em um loop while eu esperaria que ele permanecesse o mesmo, mas isso não acontece. Quando faço eco da linha no loop, o segundo campo (os IDs) é sempre alterado para '1', assim:
cat /var/tmp/file | while read line
do
echo $line
done
Isso me dá uma saída de:
15:56:14,965 1
18:08:43,706 1
12:01:49,233 1
O que é obviamente completamente diferente do que está no arquivo e me deixou perplexa.
Coisas que eu tentei até agora:
- Eu pensei que talvez a variável $ line ficou presa na memória, então tentei limpar isso, não funcionou.
- Eu experimentei o clássico 'desligue e ligue novamente' para o servidor por falta de ideias melhores, achando que talvez isso pudesse limpar tudo o que possa ter ficado preso.
- Tentei executar o script em outros dois servidores e tive o mesmo problema.
Atualmente, estou pensando que talvez não goste do formato do arquivo, possivelmente relacionado aos colchetes ou vírgulas. Embora eu não saiba por que isso aconteceria ou por que isso aconteceria de repente.
Nota: Nada foi alterado no script ou nos arquivos de log em execução desde que foram gravados. Estava trabalhando anteriormente por dois anos.
Editar: Após sugestões, verifiquei o que pode ter mudado no ambiente, tanto quanto eu posso dizer o mesmo. A menos que algo tenha mudado com uma atualização do sistema operacional (que eu não sei como verificar):
- .bash_profile e .profile não foram editados em mais de três anos.
- Eu tentei executar o script em outros shells ksh, bash, csh. O mesmo problema encontrado em todos eles.
- Eu tentei executar o script com outros usuários, incluindo o root. Novamente o mesmo problema com todos eles.
Obrigado Matt