Pesquisa de site

Como ativar o modo de depuração de Shell Script no Linux


Um script é simplesmente uma lista de comandos armazenados em um arquivo. Em vez de executar uma sequência de comandos digitando-os um por um o tempo todo no terminal, um usuário do sistema pode armazenar todos eles (comandos) em um arquivo e invocar repetidamente o arquivo para reexecutar os comandos várias vezes.

Ao aprender scripts ou durante os estágios iniciais de escrita de scripts, normalmente começamos escrevendo scripts pequenos ou curtos com algumas linhas de comandos. E geralmente depuramos esses scripts fazendo nada mais do que observar sua saída e garantir que funcionem conforme pretendido.

No entanto, à medida que começamos a escrever scripts muito longos e avançados com milhares de linhas de comandos, por exemplo, scripts que modificam configurações do sistema, realizam backups críticos em redes e muito mais, perceberemos que apenas olhar para a saída de um script não é suficiente. o suficiente para encontrar bugs em um script.

Portanto, nesta série de depuração de script de shell no Linux, veremos como habilitar a depuração de script de shell, explicaremos os diferentes modos de depuração de script de shell e como usá-los na série subsequente.

Como iniciar um script

Um script se distingue de outros arquivos por sua primeira linha, que contém um #! (She-bang – define o tipo de arquivo) e um nome de caminho (caminho para o interpretador) que informa ao sistema que o arquivo é uma coleção de comandos que serão interpretados pelo programa especificado (interpretador).

Abaixo estão exemplos das “primeiras linhas” em diferentes tipos de scripts:

#!/bin/sh          [For sh scripting]
#!/bin/bash        [For bash scripting] 
#!/usr/bin/perl    [For perl programming]
#!/bin/awk -f      [For awk scripting]   

Nota: A primeira linha ou #! pode ser omitida se um script contiver apenas um conjunto de comandos padrão do sistema, sem nenhum comando interno diretivas shell.

Como executar um script Shell no Linux

A sintaxe convencional para invocar um shell script é:

script_name  argument1 ... argumentN

Outra forma possível é especificar claramente o shell que executará o script conforme abaixo:

shell script_name argument1 ... argumentN  

Por exemplo:

/bin/bash script_name argument1 ... argumentN     [For bash scripting]
/bin/ksh script_name argument1 ... argumentN      [For ksh scripting]
/bin/sh script_name argument1 ... argumentN       [For sh scripting]

Para scripts que não possuem #! como primeira linha e contêm apenas comandos básicos do sistema, como o abaixo:


#script containing standard system commands
cd /home/$USER
mkdir tmp
echo "tmp directory created under /home/$USER"

Simplesmente torne-o executável e execute-o da seguinte maneira:


chmod +x  script_name
./script_name 

Métodos para ativar o modo de depuração de Shell Script

Abaixo estão as principais opções de depuração de script de shell:

  1. -n (abreviação de noexec ou no ecxecution) – instrui o shell a ler todos os comandos, mas não os executa. Esta opção ativa o modo de verificação de sintaxe.
  2. -x (abreviação de xtrace ou rastreamento de execução) – diz ao shell para exibir todos os comandos e seus argumentos no terminal enquanto são executados. Esta opção ativa o modo de rastreamento de shell.

1. Modificando a primeira linha de um script Shell

O primeiro mecanismo é alterar a primeira linha de um script de shell conforme abaixo, isso permitirá a depuração de todo o script.

#!/bin/sh option(s)

No formulário acima, a opção pode ser uma ou uma combinação das opções de depuração acima.

2. Invocando Shell com opções de depuração

A segunda é invocar o shell com opções de depuração como segue, este método também ativará a depuração de todo o script.

shell option(s) script_name argument1 ... argumentN

Por exemplo:

/bin/bash option(s) script_name argument1 ... argumentN   

3. Usando o comando integrado set Shell

O terceiro método é usar o comando interno set para depurar uma determinada seção de um script de shell, como uma função. Este mecanismo é importante porque nos permite ativar a depuração em qualquer segmento de um shell script.

Podemos ativar o modo de depuração usando o comando set no formulário abaixo, onde opção é qualquer uma das opções de depuração.

set option 

Para ativar o modo de depuração, use:

set -option

Para desativar o modo de depuração, use:

set +option

Além disso, se habilitamos vários modos de depuração em diferentes segmentos de um script de shell, podemos desabilitar todos eles de uma vez, assim:

set -

Por enquanto é isso, habilitando o modo de depuração de script de shell. Como vimos, podemos depurar um script de shell inteiro ou uma seção específica de um script.

Nos próximos dois episódios desta série, abordaremos como usar as opções de depuração de script de shell para explicar verboso, verificação de sintaxe e depuração de rastreamento de shell > modos com exemplos.

É importante ressaltar que não se esqueça de fazer perguntas sobre este guia ou talvez de nos fornecer feedback por meio da seção de comentários abaixo. Até então, fique conectado à Tecmint.