Executando a saída do script e verificando a consistência

0

Dado um arquivo que foi gerado por script , existe uma maneira de executar todos esses comandos em ordem e, em seguida, verificar se a saída corresponde ao que estava no arquivo de script?

Eu assumo que diff pode ser usado para a última parte, mas não tenho ideia de como fazer o primeiro. Alguma idéia?

Usando um shell tcsh no linux (Debian, mas duvido que seja importante).

    
por soandos 23.02.2012 / 19:54

2 respostas

1

Editar : no manual:

Script places everything in the log file, including linefeeds and backspaces. This is not what the naive user expects.

Isso significa que pode ser possível fazer nos casos mais simples, procurando ocorrências de $PS1 na saída e executando a sequência após ela, mas pode se tornar impossível em breve:

  • Você não pode ver a diferença entre um caractere literal e um caractere de escape como ^C .
  • Qualquer trabalho em segundo plano pode inserir texto a qualquer momento, atrapalhando a saída. %código%
  • Se ele registrar um erro padrão, há todo o problema de saída assíncrona.

Se for uma opção, prefiro usar / var / log / cmdlog e ver se todo o texto produzido pelos comandos gravados lá ocorre em qualquer lugar dentro do arquivo while true; do sleep $RANDOM; echo garbage; done & .

    
por 24.02.2012 / 13:43
0

Ok, então uma das semânticas de diff é que ela gera texto se os arquivos forem diferentes e não produzirá nada se forem iguais.

Dados os arquivos foo e bar , eis o que você pode fazer:

# Run your script
if [ "$(diff foo bar)" = "" ]; then
    echo "They are the same"
else
    echo "They are different"
fi

(Sua primeira parte não é exatamente clara - você tem uma amostra de saída out.template e script > out.log e quer garantir que out.template e out.log sejam iguais? Ou outra coisa?)

    
por 24.02.2012 / 01:36

Tags