Páscoa - Festas Móveis
Publicado por Khayla Elias dos Santos (última atualização em 09/06/2014)
[ Hits: 3.956 ]
Homepage: https://linktr.ee/khayla.elias
Calcula datas de feriados nacionais móveis baseados na Páscoa através do algoritmo de Jean Baptiste Joseph Delambre.
Exemplo de uso:
$ pascoa 2014
O parâmetro de entrada é opcional, caso se refira ao ano corrente.
#!/bin/bash
# Calculo dos Feriados Nacionais baseados na Pascoa através do
# Algoritmo de Jean Baptiste Joseph Delambre (1749 – 1822).
#
# Por: Alexandre Elias dos Santos (aleniac@yahoo.com.br)
# confere parametro de entrada
if [ $# != 0 ]; then
if [ $1 -ge 1583 ]; then
y=$1
else
echo "Erro: Ano deve ser maior ou igual a 1583!"
exit 1
fi
else
y=`date +%Y`
fi
#testa ano bissexto para calendario gregoriano
function bissexto(){
local y=$1
if ([ $(($y % 4)) -eq 0 ] && [ $(($y % 100)) -ne 0 ]) || [ $(($y % 400)) -eq 0 ]
then return 1
else return 0
fi
} # bissexto – retorna 1 se ano for bissexto, caso contrario 0.
# vetores para armazenar dia e mes dos feriados moveis (carnaval, paixao, pascoa, corpus)
vdia=(0 0 0 0)
vmes=(0 0 0 0)
# vetor para saida do teste de ano bissexto
bis=("nao" "sim")
#calcula pascoa
a=$(($y % 19))
b=$(($y / 100))
c=$(($y % 100))
d=$(($b / 4))
e=$(($b % 4))
f=$((($b + 8 ) / 25))
g=$((($b -$f + 1) / 3))
h=$(((19 * $a + $b - $d - $g + 15) % 30))
i=$(($c / 4))
k=$(($c % 4))
l=$(((32 + 2 * $e + 2 * $i - $h - $k) % 7))
m=$((($a + 11 * $h + 22 * $l) / 451))
p=$((($h + $l - 7 * $m + 114) / 31))
q=$((($h + $l - 7 * $m + 114) % 31))
q=$(($q + 1))
vdia[2]=$q
vmes[2]=$p
#verifica se ano e’ bissexto
bissexto $y
bi=$?
# calcula Sexta da Paixao
if [ $q -le 2 ]; then
vdia[1]=$((29 + $q)) # dia
vmes[1]=3 #mes
else
vdia[1]=$(($q - 2)) # dia
vmes[1]=$p # mes
fi
# calcula terça de Carnaval
if [ $p -eq 4 ]; then
if [ $q -le 16 ]; then
vdia[0]=$((12 + $bi + $q))
vmes[0]=2
else
vdia[0]=$(($q - 16))
vmes[0]=3
fi
else
vdia[0]=$(($bi + $q - 19))
vmes[0]=2
fi
# calcula quinta de Corpus
vdia[3]=$(($q - 1))
if [ $p -eq 3 ]; then
vmes[3]=5
else
if [ $q -eq 1 ]; then
vdia[3]=31
vmes[3]=5
else
vmes[3]=6
fi
fi
# saidas
echo "Datas das Festas Moveis em $y"
echo "Algoritmo de Delambre (1749 - 1822)"
echo
echo -e "Ano Bissexto: \t${bis[$bi]}"
echo -e "Carnaval: \t${vdia[0]}/${vmes[0]}"
echo -e "Paixao: \t${vdia[1]}/${vmes[1]}"
echo -e "Pascoa: \t${vdia[2]}/${vmes[2]}"
echo -e "Corpus: \t${vdia[3]}/${vmes[3]}"
Verificando existência de computadores na rede
Script para verificação do serviço do Apache (webserver) em sistemas Linux Ubun
Script para visualizar logs do squid
Números impares no intervalo entre 2 números
Instalar e Configurar a santíssima trindade (PAP) no Void Linux
O Editor de Texto Nano: Simplicidade no Terminal
SynapSeq - programa para estimular as ondas cerebrais
Por que seu __DIR__ falhou ou o "inferno" dos caminhos no PHP
[Resolvido] Meu monitor suporta 100fps. Por que o máximo é 60fps nos jogos?
Jogando "Magic" gratuitamente no Linux
Zoxide e fzf no bash para incrementar o uso do Terminal
A falsa sensação de que entende a tal da palavra! (2)
[pedido] biglinux versao 1 (0)









