====== 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