Table des matières

Jours Fériés d'une année

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)

feries
#!/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