Não tenho certeza sobre o comportamento do meu script ao gravar no arquivo de log

1

Eu tenho um script ksh muito simples e em determinados pontos eu quero escrever em um arquivo de log. Eu uso os seguintes comandos em dois lugares ...

print "Directory listing 1:\n" > ${LogFile}
ll >> ${LogFile}

(Nota: A segunda vez que este comando é usado, imprima a listagem de diretórios 2)

Meu problema é, quando vejo o arquivo de log depois, apenas a segunda execução desses comandos funciona! Portanto, não há "Lista de diretórios 1" e a saída "ll" acompanhante.

Eu testei e testei o script para garantir que não há nada de errado na minha lógica. Eu adicionei comandos de teste de impressão antes de cada um, então sei que eles são executados.

Há algo que eu fiz de errado ou não estou percebendo?

    
por Rich 25.01.2013 / 12:57

1 resposta

3

Sempre que você fizer um redirecionamento com > (sua primeira linha), o ${LogFile} será truncado para 0 e, em seguida, gravado. Se bem entendi, você faz o acima duas vezes, o primeiro material é substituído pelo segundo.

O que você precisa fazer é seguir os passos:

> ${LogFile}    # This just truncates if there was anything there, writes nothing
 ...
echo "First round" >> ${LogFile}
ls -l >> ${LogFile}
 ...
echo -e "\nSecond round" >> ${LogFile}
ls -l >> ${LogFile}
 ...
    
por 25.01.2013 / 13:21