Estações de trabalho on-line OnWorks Linux e Windows

Logotipo

Hospedagem online grátis para estações de trabalho

<Anterior | Conteúdo | Próxima>

Traçado

Os erros são frequentemente casos de fluxo lógico inesperado dentro de um script. Ou seja, partes do script nunca estão sendo executadas ou estão sendo executadas na ordem errada ou na hora errada. Para visualizar o fluxo real do programa, usamos uma técnica chamada rastreamento.

Um método de rastreamento envolve a colocação de mensagens informativas em um script que exibe o local de execução. Podemos adicionar mensagens ao nosso fragmento de código:



echo "preparando para deletar arquivos"> & 2

if [[-d $ dir_name]]; então se cd $ dir_name; então

echo "deleting files"> & 2

rm *

outro

echo "não é possível fazer cd para '$ dir_name'"> & 2 exit 1

fi mais

echo "não existe tal diretório: '$ dir_name'"> & 2 exit 1

fi

echo "exclusão de arquivo completa"> & 2

echo "preparando para deletar arquivos"> & 2

if [[-d $ dir_name]]; então se cd $ dir_name; então

echo "deleting files"> & 2

rm *

outro

echo "não é possível fazer cd para '$ dir_name'"> & 2 exit 1

fi mais

echo "não existe tal diretório: '$ dir_name'"> & 2 exit 1

fi

echo "exclusão de arquivo completa"> & 2


Enviamos as mensagens para erro padrão para separá-las da saída normal. Também não recuamos as linhas que contêm as mensagens, por isso é mais fácil localizá-las na hora de removê-las.

Agora, quando o script é executado, é possível ver que a exclusão do arquivo foi realizada:



[me @ linuxbox ~] $ deletion-script preparando-se para deletar arquivos deletando arquivos

exclusão do arquivo concluída [me @ linuxbox ~] $

[me @ linuxbox ~] $ deletion-script preparando-se para deletar arquivos deletando arquivos

exclusão do arquivo concluída [me @ linuxbox ~] $


O bash também fornece um método de rastreio, implementado pela opção -x e o comando set com a opção -x. Usando nosso script de problema anterior, podemos ativar o rastreamento de todo o script adicionando a opção -x à primeira linha:


#! / bin / bash -x

#! / bin / bash -x

depuração


# problema: script para demonstrar número de erros comuns = 1

se [$ número = 1]; então

echo "O número é igual a 1." outro

echo "O número não é igual a 1."

fi

# problema: script para demonstrar número de erros comuns = 1

se [$ número = 1]; então

echo "O número é igual a 1." outro

echo "O número não é igual a 1."

fi


Quando executado, os resultados são assim:



[me @ linuxbox ~] $ problema

+ número = 1

+ '[' 1 = 1 ']'

+ echo 'Número é igual a 1.' O número é igual a 1.

[me @ linuxbox ~] $ problema

+ número = 1

+ '[' 1 = 1 ']'

+ echo 'Número é igual a 1.' O número é igual a 1.


Com o rastreio habilitado, vemos os comandos executados com as expansões aplicadas. Os sinais de mais à esquerda indicam a exibição do traço para distingui-los das linhas de saída regular. O sinal de mais é o caractere padrão para saída de rastreamento. Está contido no PS4 (prompt string 4) variável de shell. O conteúdo desta variável pode ser ajustado para tornar o prompt mais útil. Aqui, modificamos o conteúdo da variável para incluir o número da linha atual no script onde o rastreamento é executado. Observe que as aspas simples são necessárias para evitar a expansão até que o prompt seja realmente usado:



[me @ linuxbox ~] $ export PS4 = '$ LINENO +'

[me @ linuxbox ~] $ problema

5 + número = 1

7 + '[' 1 = 1 ']'

8 + echo 'Número é igual a 1.' O número é igual a 1.

[me @ linuxbox ~] $ export PS4 = '$ LINENO +'

[me @ linuxbox ~] $ problema

5 + número = 1

7 + '[' 1 = 1 ']'

8 + echo 'Número é igual a 1.' O número é igual a 1.


Para realizar um rastreamento em uma parte selecionada de um script, em vez de todo o script, podemos usar o conjunto comando com o -x opção:


#! / Bin / bash

# problema: script para demonstrar número de erros comuns = 1

#! / Bin / bash

# problema: script para demonstrar número de erros comuns = 1



set -x # Ativar rastreamento

se [$ número = 1]; então

echo "O número é igual a 1." outro

echo "O número não é igual a 1."

fi

set + x # Desativa o rastreio


set -x # Ativar rastreamento

se [$ número = 1]; então

echo "O número é igual a 1." outro

echo "O número não é igual a 1."

fi

set + x # Desativa o rastreio


Usamos o conjunto comando com o -x opção para ativar o rastreamento e o +x opção para desativar o rastreamento. Essa técnica pode ser usada para examinar várias partes de um script problemático.


Top OS Cloud Computing na OnWorks: