Usando variáveis em shell script

Publicado por Jamilson Silva do Carmo 30/07/2009

[ Hits: 12.600 ]

Download mostrando_datas.sh




Este script desenvolvi com intuito de praticar o que venho aprendendo no livro do guru Aurélio C. Marinho.

  



Esconder código-fonte

#!/bin/bash
# 
# --------------------------------------------
# Criado em: Qua 29/Jul/2009 - 11:22hs
# Autor: Jamilson Silva <jscarmo@ig.com.br>
# Manutenção: 
# --------------------------------------------
# 
# Propósito Script:  
# 
# 
# Histórico: 
#   v1.0 - Aprendendo a usar o comando date
#   v1.0.1 - Incluida a opção -h, --help
#   v1.0.2 - Arrumado o bug quando alguma opção é passada errada    
#   v1.0.3 - Incluidas as opções (-t, --tudo), (-d, --dia), (-b, --bi)
#
# Licença: GPL

# Inicialização das variáveis
VERSAO=$(grep '^#   v' $0 | tail -n 1 | cut -d"-" -f1 | tr -d "#v") # Extrai versão do cabeçalho do programa
ESTADO="Manaus,AM" # Define nome do estado e sua capital
EXTENSO=0          # Ativa a data por extenso
HORA=0             # Ativa a hora
TUDO=0             # Ativa data completa
ANO=0              # Ativa a verificaçã se ano é bissexto ou não
DIA=0              # Ativa verificação do dia da semana

SOBRE="
mostrando_datas $VERSAO\n\n
Copyright © 2009 Free Software Foundation, Inc.\n
Licença GPLv3+: GNU GPL versão 3 ou posterior <http://gnu.org/licenses/gpl.html>\n
Este software é livre: você é livre para mudá-lo e redistribuí-lo.\n
NÃO HÁ GARANTIA, para a extensão permitida por lei.\n\n

Escrito por Jamilson Silva.\n
"

MENSAGEM_USO="\n
Uso: `basename $0` [OPÇÕES]\n\n
   \tOPÇÕES:\n
   \t -e, --ext       \tMostra data na forma extensa\n
   \t -h, --hora      \tMostra a hora\n
   \t -t, --tudo      \tMostra a data completa\n
   \t -a, --ajuda       \tMostra esta tela e sai\n
   \t -d, --dia       \tMostra o dia da semana\n
   \t -b, --bi        \tMostra se o ano é bissexto ou não\n
   \t -v, --versao     \tMostra a versão do programa e sai
\n\n
Comunicar 'bugs' para <jscarmo@ig.com.br> 
"

ERRO="\n
$0: opção inválida -- '`echo "$1" | tr -d "-" `'\n
Tente '$0 --help' para mais informação.\n
"

dia_semana(){
   dia=$(date +%w)
   if [ $dia -eq 0 ]; then
      echo -e "\nDia da Semana: $(date +%A)\n"
   elif [ $dia -eq 6 ]; then
      echo -e "\nDia da Semana: $(date +%A)\n"
   else
      echo -e "\nDia da Semana: $(date +%A)-feira\n"
   fi      
}

ano_bissexto(){
   ano=$(cal 2 $(date +%Y) | grep 29 | wc -l)
   if [ $ano -eq 1 ]; then
      echo -e "\nAno: É Bissexto"
   else
      echo -e "\nAno: Não É Bissexto"
   fi
   echo
}

if [ $# -eq 0 ]; then 
   date # $(date) 
   #echo -e "Você deve passar um parâmetro \nVerifique usando $0 -a para saber quais parâmetros usar\n"
fi

while [ -n "$1" ]; do
   case "$1" in
      -e|--ext) EXTENSO=1 
                ;;
      -h|--hora) HORA=1 
                 ;;   
      -t|--tudo) TUDO=1
                 ;;
      -a|--ajuda) echo -e $MENSAGEM_USO 
                  exit 0 
                  ;;
      -d|--dia) DIA=1
                ;;
      -b|--bi) ANO=1
               ;;
      -v|--versao) echo -e $SOBRE 
                   exit 0 
                   ;;
      *) echo -e $ERRO ; exit 1 
         ;;
   esac 
   shift
done

if [ "$EXTENSO" = 1 ]; then
   echo -e "\n$(date +"Manaus,AM %d de %B de %Y")\n" 
fi

if [ "$HORA" = 1 ]; then
   echo   
   echo "Hora Certa: $(date +%H:%M:%S)"
   echo
fi

if [ "$ANO" = 1 ]; then
   ano_bissexto
fi

if [ "$DIA" = 1 ]; then
   dia_semana
fi

if [ "$TUDO" = 1 ]; then
   echo ""
   dia_semana
   echo "Hora: $(date +%H:%M:%S)"
   echo -e "\n$(date +"Manaus,AM %d de %B de %Y")" 
   ano_bissexto
fi

Scripts recomendados

Calculo de médias da UNIP

Configuração pós-instalação do Slackware 14.2

Pegar IP EXTERNA ( ADSL )

Monitora HD e envia e-mail caso atinja a um limite utilizado

Criar lançadores de aplicativos no Unity


  

Comentários
[1] Comentário enviado por vitinho217 em 30/10/2014 - 11:44h

Fiz uma pequena correção na função que apresenta o dia da semana:

dia_semana(){
dia=$(date +%w)
if [ $dia -eq 0 -o $dia -eq 6 ]; then
echo -e "\nDia da Semana: $(date +%A)\n"
else
echo -e "\nDia da Semana: $(date +%A)-feira\n"
fi
}

Um abraço e obrigado pelo script


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts