Você manja de shell script? Então que tal fazer a sua própria função ZZ? Siga os passos abaixo e veja como é simples!
1. Faça um shell script normal
Esqueça Funções ZZ por enquanto. Primeiro faça o seu programa funcionar como um script Shell normal. Preocupe-se em testar situações inesperadas e tente antecipar erros do usuário para certificar-se que seu programa não contém bugs.
2. Coloque seu script numa função
Tudo funcionando? Então agora coloque todo o seu script dentro de uma função e declare todas as variáveis utilizadas como locais.
Supondo que o seu script é o chaves.sh, com este conteúdo:
#!/bin/bash
mensagem="Foi sem querer querendo..."
repita=3
i=0
while [ $i -lt $repita ]
do
echo "$mensagem"
i=$((i+1))
done
Ele deve ficar assim:
#!/bin/bash
chaves ()
{
local mensagem="Foi sem querer querendo..."
local repita=3
local i=0
while [ $i -lt $repita ]
do
echo "$mensagem"
i=$((i+1))
done
}
chaves "$@"
Note que o comando local é usando antes da declaração de cada variável. NÃO use variáveis globais dentro de funções.
A função foi declarada e a última linha é a sua chamada. Então como a lógica não foi alterada, o programa continua funcionando da mesma maneira. Se não estiver, reveja os passos e o deixe funcional.
3. Transforme a função numa ZZ
#!/bin/bash
source /usr/bin/funcoeszz # inclui o ambiente ZZ
ZZPATH=$PWD/chaves.sh # o PATH desse script
# ----------------------------------------------------------------------------
# Repete a fala do Chaves.
# Uso: zzchaves
# Ex.: zzchaves
#
# Autor: Fulano da Silva, @fulano
# Desde: 2000-02-22
# Versão: 1
# Requisitos: zzzz
# Tags: texto falas
# ----------------------------------------------------------------------------
zzchaves ()
{
zzzz -h chaves "$1" && return
local mensagem="Foi sem querer querendo..."
local repita=3
local i=0
while [ $i -lt $repita ]
do
echo $mensagem
i=$((i+1))
done
}
Acompanhe o que foi feito:
-
As Funções ZZ originais foram incluídas no script, com o comando
source. Assim simulamos o “ambiente ZZ” em nosso script. -
Redefinimos a variável
ZZPATHpara o caminho completo de nosso script. Isso é necessário para o funcionamento do--help. -
O prefixo “zz” foi adicionado ao nome da função, ficando
zzchaves. -
A chamada à função que existia na última linha foi retirada. Agora chamaremos a função diretamente pela linha de comando.
-
Foi adicionada uma chamada à função
zzzzna primeira linha da nossa função. Essa linha é sempre igual, mudando apenas o nome da função. Essa linha serve para que funcione o--helpde sua função. -
Por falar em
--help, notou que foram adicionados comentários antes da função? É desses comentários que o texto de ajuda é extraído. É um formato padrão que deve ser seguido à risca. Na dúvida copie e cole um já existente e somente altere o texto.
Descrição do formato:
- Uma linha separadora com “
# ----------------” - A URL do site pesquisado (se aplicável)
- A descrição do que faz a função, em uma linha, com ponto final.
- Pode haver linhas extras para detalhar melhor a função
- A linha com a sintaxe de uso “
# Uso: zz...” - A linha com o exemplo de uso “
# Ex.: zz...” - A linha vazia
- A linha com as informações do autor (nome completo e e-mail/site/twitter)
- A linha com a data da criação da função (formato ISO: AAAA-MM-DD)
- A linha com a versão da função (número inteiro e sequencial, inicia em 1)
- A linha com a lista de requisitos, que são outras funções zz usadas no código
- A linha com palavra(s) chave(s) sobre a função (tags)
- Uma linha separadora com “
# ----------------”
4. Corra para o abraço!
$ source chaves.sh
$ zzchaves
Foi sem querer querendo...
Foi sem querer querendo...
Foi sem querer querendo...
$ zzchaves -h
Repete a fala do Chaves
Uso: zzchaves
Ex.: zzchaves
$
:)
5. Disponibilize para a comunidade
Sua função pode ser útil para outras pessoas? Então adicione ela no projeto!
- Vai lá no GitHub
- Dá um fork
- Adicione a função nova
- Confira se ela se encaixa no Coding Style
- Confira se ela é portável
- Mande um pull request
- \o/