By Marcos Oliveira,

Bang.sh - Framework para Shell Script

Iniciar uma aplicações em bash script geralmente é uma tarefa trabalhosa, mas o Bang.sh pode lhe ajudar. O framework , tentar trazer uma forma mais organizada de se programar em Shell Script . Muitos dos scripts que são vistos por aí, acabam sendo códigos mal identados e confusos.

O framework está disponível num repositório no GitHub. Se você se sentir a vontade, pode contribuir ! Todas contribuições são bem vindas. Se algum bug for encontrado, reporte! Assim poderemos tornar o framework mais estável e útil.

O uso dele é bem simples. Por hora, ainda não faz muitas coisas, mas já quebra o galho ! A funcionalidade mais importante dele agora é o parseador de parâmetros.

Vamos fazer um exemplo

#!/bin/sh
# app.sh
source ./bang.sh
# Help flag
bang_addflag --help "Show this help"
bang_addalias --help -h
# Message
bang_addopt --msg "Message to be printed!"
bang_addalias --msg -m
# Output
bang_addflag --stderr "Redirects the message to stderr"
bang_required_args "--msg"
bang_init "$@"
if bang_hasflag --help; then
 bang_show_usage
else
 bang_check_required_args
 msg="Your message is: $(bang_getopt --msg)"
 cmd="echo"
 bang_hasflag --stderr && cmd="print_e"
 $cmd "$msg"
fi

No script acima são adicionadas 3 argumentos ao arquivo:

  • –help ou -h,
  • –msg ou -m
  • –strderr.

Veja agora o output segundo a combinação de alguns parâmetros

Sem argumentos, o programa deve verificar pelos argumentos requeridos

./app.sh
The program was aborted due an error:
Option '--msg' is required and was not specified

Mostrando o texto de ajuda automaticamente montado

./app.sh -h

Ou

./app.sh --help
Showing script usage:
Options:
--msg|-m  (Required) Message to be printed!
Flags:
--help|-h Show this help
--stderr Redirects the message to stderr

Imprime a mensagem no STDOUT

./app.sh --msg "Hello World"
Your message is: Hello World

Imprime a mensagem no STDERR

./app.sh --msg "Hello World" --stderr 1>/dev/null
Your message is: Hello World

Além destas, há outras funções úteis, como o bang_raise_error que dispara um erro (e mostra no STDERR) formatado com um padrão e dá exit 2.

bang_raise_error “Mensagem de erro”

Há também a função para imprimir no STDERR.

print_e “Mensagem que irá para para o STDERR”

Funções úteis como o in_array e key_exists para se trabalhar com arrays.

A=(A B C)
in_array "B" "A" && echo "B está em \$A"
declare -A A=(["name"]="Gustavo Dutra")
key_exists "name" "A" && echo "name é chave de \$A"

Por enquanto é isto!

Bons scripts!

Qualquer dúvida, pode comentar aqui !

Via: http://gustavodutra.com

Curso Extremamente Avançado em Shell Script Bash

Você irá descobrir técnicas avançadas de escrever em Shell Script. Como criar instaladores para distribuições Linux, Animações, Documentações, além de tudo sobre Processos em sistemas tipo UNIX, detalhes sobre Comandos Avançados e Muito Mais !