sexta-feira, 6 de julho de 2012

Como fazer shell script profissional

Administrador Linux que se preze tem que saber fazer um bom shell script, que consiga resolver desde as necessidades mais simples até as mais complexas, usando poucas ou muitas linhas de código.

Se você ainda não é um ninja na arte de escrever shell script, está na hora de começar a aprender. Vamos lá!
Conheça os fundamentos do desenvolvimento de software

Talvez você nunca tenha pensado dessa forma, mas um script não deixa de ser um software. Sendo assim, é fundamental que você pelo menos conheça os fundamentos de desenvolvimento de software, principalmente algoritmos e fluxograma, que te ajudarão a conceber, planejar e desenvolver seu script.
Conheça o trio do poder supremo

Sem dúvidas, uma das grandes dificuldades em aprender uma nova linguagem de programação é não conhecer seus comandos e palavras-chave. Você pensa em desenvolver um software, sabe o que precisa ser feito mas não sabe qual é o código que executa a tarefa que você precisa.

Ao escrever um shell script, existem três coisas que eu chamo de "trio do poder supremo", porque quem as conhece bem tem condição de fazer scripts para realizar até as tarefas mais complexas. São eles:

1 - Shell: o interpretador de comandos propriamente dito (os mais usados são o bash e o sh), possui muitos comandos internos, estruturas condicionais, de repetição e variáveis que oferecem muitas possibilidades ao desenvolvedor do script;
2 - Comandos do Linux:  um bom script utiliza os comandos mais adequados para cada função, para que as tarefas sejam realizadas no menor tempo possível. Quando mais comandos você conhecer e souber para que servem, mais fácil será projetar um script para atender às suas necessidades. Menção honrosa para os três comandos mais importantes para quem quer escrever shell scripts profissionais: grep, sed e awk;
3 - Expressões regulares: quem conhece, faz mágica. Você pode até saber fazer bons scripts, mas enquanto não souber usar expressões regulares não será um ninja.

Seja organizado

Um script precisa ser legível, e para isso ele deve começar organizado. Algumas dicas importantes para isso:

1 - Crie um cabeçalho para o script escrevendo seu nome, o que faz, quem escreveu e quando foi escrito, como no exemplo abaixo.


Código:
#!/bin/bash
#
# script-de-teste.sh
# Script para demonstrar como fazer shell script
# organizado
#
# Autor: Davidson Paulo <meuemail@meudominio.com>
# Data: 20 de Setembro de 2011
2 - Coloque, sempre que possível, todas as variáveis no mesmo bloco de texto, bem como funções e, por último, a rotina principal, como no exemplo abaixo.

Código:
## Variáveis
Dir="/var/tmp"

## Funções
listDir() {
  [ -d "$1" ] && ls "$1" || echo "'$1' não existe ou não é um diretório."
}

## Rotina principal
echo "Mostrando diretório '$1'"
listDir "/etc"
3 - Use padrões de nomenclatura. Você pode usar letras maiúsculas e minúsculas para nomes de variáveis e funções, mas é muito mais profissional definir um padrão para nomes das suas variáveis. Eu, particularmente, gosto de usar variáveis com iniciais maiúsculas, funções com iniciais minúsculas e ambas com iniciais de palavras consecutivas em maiúsculas, como no exemplo abaixo.

Código:
## Variaveis
VarPrimeira="1"
VarSegunda="2"

## Funções
funcaoPrimeira () {
  echo "1"
}

funcaoSegunda() {
  echo "2"
}
Contribuição do leitor: Desenvolvi o uso da prefixação de nomes de funções e variáveis com underline. Uso este artificio para que funções/procedimentos e variáveis do script sejam mais facilmente diferenciáveis dos comandos. Exemplos:
  • Evitando a sobrescrita "acidental" de variáveis: $USER e _USER='usuario';
  • _mkdir (função de usuário) e mkdir (comando no PATH do sistema

4 - Por favor, use identação! Deixe seu código alinhado. Nada parece tão amador quando um código sem identação. Compare:

Código:
#!/bin/bash
# Esse é um código sem identação nenhuma
if [ "$USER" = "davidson" ]
then
echo "Válido"
else
echo "Inválido"
fi
Código:
#!/bin/bash
# Esse é um código com identação
if [ "$USER" = "davidson" ] ; then
    echo "Válido"
else
    echo "Inválido"
fi
Agora, me diga, qual código parece mais profissional? Pois é.

Use arquivos

Se seu script utiliza muitas variáveis globais e funções, você pode armazená-los em arquivos separados e deixar seu script menor. Além disso, poderá aproveitar as mesmas variáveis e funções em outros scripts.

Tomemos como exemplo o script script-de-teste.sh, mostrado lá em cima. Podemos retirar as variáveis e gravá-las no arquivo /etc/script-de-teste e fazer o mesmo com as funções, gravando-as no arquivo /usr/lib/script-de-teste. Depois, o nosso script poderia ficar bem menor:

Código:
## Variáveis
. /etc/script-de-teste

## Funções
. /usr/lib/script-de-teste

## Rotina principal
echo "Mostrando diretório '$1'"
listDir "/etc"
Nesse exemplo, tínhamos apenas uma variável e uma função. Mas poderíamos ter números muito maiores. Eu mesmo já desenvolvi scripts que usavam dezenas delas, e separá-las em arquivos foi muito útil para deixar o script muito mais organizado, elegante e fácil de entender.

Contribuição do leitor: Eu prefiro usar para incluir código a instrução source e não simplesmente o ponto ., acho que assim amplificamos a legibilidade imediata do código
← Postagem mais recente Postagem mais antiga → Página inicial

0 comentários:

Postar um comentário

Copyright © Hacking & Security | Powered by Xandao Design by Xandao86 | Xandao86