====== Jours Fériés d'une année ======
* Affiche la liste des jours fériés d'une année donnée en argument.
* Script directement fonctionnel (pas de modification nécessaire).
===== L'aide =====
Usage : feries ANNEE
feries --help
Lister les jours fériés d'une ANNEE donnée en argument.
Option :
-h,--help Afficher cette aide et quitter.
L'ANNEE doit être du format AAAA.
Si ANNEE est omis, utiliser l'année en cours.
Tawal®©
===== Le script =====
(mis à jour le 10-03-2023)
#!/bin/bash
### Couleurs et Formats Textes
Surb='\e[1m'
Rst='\e[m'
### Fonctions
usage() {
echo -e "Usage : ${Surb}${0##*/} ANNEE${Rst}"
echo -e " ${Surb}${0##*/} --help${Rst}"
echo
echo -e "Lister les jours fériés d'une ${Surb}ANNEE${Rst} donnée en argument."
echo
echo "Option :"
echo " -h,--help Afficher cette aide et quitter."
echo
echo -e "L'${Surb}ANNEE${Rst} doit être du format ${Surb}AAAA${Rst}."
echo -e "Si ${Surb}ANNEE${Rst} est omis, utiliser l'année en cours."
printf "%55s\n" "Tawal®©"
exit 0
}
err_opt() {
echo -e "L'option '${Surb}$1${Rst}' n'est pas reconnue." >&2
exit 1
}
### Gestion Options et Arguments
while getopts :h-: opt
do
case $opt in
h) usage ;;
-) case $OPTARG in
help) usage ;;
*) err_opt --"$OPTARG" ;;
esac ;;
*) err_opt -"$OPTARG" ;;
esac
done
an=$1
if [ $# -eq 0 ]
then
echo "Recherche sur l'année en cours."
an=$(date +%Y)
fi
if ! [[ $an =~ ^[0-9]{4}$ ]]
then
echo "L'année doit comporter 4 chiffres." 1>&2
exit 1
fi
### Corps du Programme
echo "Jours fériés de l'année $an :"
echo
Paques=$(date --date="$(ncal -e "$an" | awk -F"/" '{print $3"-"$2"-"$1}')" +%s)
tmp="Jour de l'An:$(date --date="$an"-01-01 +%s):
Fête du Travail:$(date --date="$an"-05-01 +%s):
Armistice 1945:$(date --date="$an"-05-08 +%s):
Fête Nationnale:$(date --date="$an"-07-14 +%s):
Assomption:$(date --date="$an"-08-15 +%s):
Toussaint:$(date --date="$an"-11-01 +%s):
Armistice 1918:$(date --date="$an"-11-11 +%s):
Noël:$(date --date="$an"-12-25 +%s):
Lundi de Pâques:$((Paques+1*86400)):
Ascension:$((Paques+39*86400)):
Lundi de Pentecôte:$((Paques+50*86400)):"
while { read -rd":" nom; read -rd":" secondes; }
do
[[ $nom =~ â|ê|ë|ô ]] && long1=21 || long1=20
read -ra date < <(date --date=@"$secondes" "+%A %d %B %Y")
[[ ${date[*]} =~ é|û ]] && long2=10 || long2=9
printf "%-3s%-${long1}s%-3s%-9s%-3s%-${long2}s%-5s\n" "" "$nom" ":" "${date[@]}"
done < <(sort -n -t":" -k2 <<<"$tmp")
echo
===== Exemple de retour =====
feries 2024
Jours fériés de l'année 2024 :
Jour de l'An : lundi 01 janvier 2024
Lundi de Pâques : lundi 01 avril 2024
Fête du Travail : mercredi 01 mai 2024
Armistice 1945 : mercredi 08 mai 2024
Ascension : jeudi 09 mai 2024
Lundi de Pentecôte : lundi 20 mai 2024
Fête Nationnale : dimanche 14 juillet 2024
Assomption : jeudi 15 août 2024
Toussaint : vendredi 01 novembre 2024
Armistice 1918 : lundi 11 novembre 2024
Noël : mercredi 25 décembre 2024