Usando Opções do Shell para Depuração e Prevenção de Erros
As opções do shell são particularmente úteis para depurar scripts e prevenir erros comuns. Nesta etapa, exploraremos duas opções importantes: xtrace para depuração e nounset para prevenção de erros.
A Opção xtrace para Depuração
A opção xtrace (também conhecida como modo de depuração) exibe cada comando e seus argumentos expandidos à medida que são executados. Isso é extremamente útil ao depurar scripts de shell.
Vamos habilitar a opção xtrace:
set -o xtrace
Agora, ao executar comandos, você os verá impressos no terminal, precedidos por um sinal de mais (+) antes de serem executados. Vamos tentar um comando simples:
echo "Hello, World!"
Sua saída incluirá tanto o comando sendo executado quanto seu resultado:
+ echo 'Hello, World!'
Hello, World!
Vamos tentar um exemplo um pouco mais complexo com uma variável:
MY_VAR="Linux"
echo "I am using $MY_VAR"
A saída mostrará como a variável é expandida:
+ MY_VAR=Linux
+ echo 'I am using Linux'
I am using Linux
Este recurso é inestimável ao tentar entender o que está acontecendo em scripts ou comandos complexos.
Para desabilitar a opção xtrace quando você não precisar mais dela:
set +o xtrace
A Opção nounset para Prevenção de Erros
A opção nounset ajuda a prevenir erros, tratando variáveis não definidas como erros, em vez de expandi-las para uma string vazia. Isso pode ajudar a detectar erros de digitação e variáveis não definidas.
Vamos habilitar a opção nounset:
set -o nounset
Agora, se você tentar usar uma variável que não foi definida, o shell produzirá um erro em vez de usar silenciosamente um valor vazio. Vamos testar isso:
echo "The value is: $UNDEFINED_VARIABLE"
Você deve ver uma mensagem de erro semelhante a:
bash: UNDEFINED_VARIABLE: unbound variable
Isso é muito melhor do que ter seu script continuar com um valor vazio inesperado, o que poderia causar problemas mais tarde.
Se você quiser desabilitar essa proteção:
set +o nounset
Agora, tentar o mesmo comando não produzirá um erro, mas usará uma string vazia em vez disso:
echo "The value is: $UNDEFINED_VARIABLE"
Saída:
The value is:
Combinando Múltiplas Opções
Você pode habilitar várias opções do shell de uma vez. Por exemplo, para habilitar xtrace e nounset:
set -o xtrace -o nounset
Ou, usando a notação abreviada:
set -xu
Muitas opções do shell têm equivalentes de uma única letra que podem ser usados com a sintaxe - (habilitar) e + (desabilitar). Por exemplo:
-x é equivalente a -o xtrace
-u é equivalente a -o nounset
-e é equivalente a -o errexit
Verifique o status atual das suas opções do shell novamente:
set -o
Experimente com diferentes opções para encontrar o comportamento do shell que melhor se adapta às suas necessidades e estilo de trabalho.