Debian Debian-France Debian-Facile Debian-fr.org Debian-fr.xyz Debian ? Communautés

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 01-11-2021 16:31:07

Tawal
Membre
Distrib. : Debian 11 Bullseye
Noyau : Linux 5.10.0-9-amd64
(G)UI : Xfce
Inscription : 25-02-2021

Jours fériés : Script pour les fainéants :)

Hello,

Je partage ici un script que je me suis amusé à faire : lister les jours fériés d'une année donnée.
Sans argument, le script liste les jours fériés de l'année en cours.
Une seule option : -h ou --help

Voici les résultats :

$ feries --help
Usage :   feries  [-h,--help]   ANNEE

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.
 



$ feries 2022
Jours fériés de l'année 2022 :

   Jour de l'An        :  samedi   01 janvier  2022
   Lundi de Pâques     :  lundi    18 avril    2022
   Fête du Travail     :  dimanche 01 mai      2022
   Armistice 1945      :  dimanche 08 mai      2022
   Ascension           :  jeudi    26 mai      2022
   Lundi de Pentecôte  :  lundi    06 juin     2022
   Fête Nationnale     :  jeudi    14 juillet  2022
   Assomption          :  lundi    15 août     2022
   Toussaint           :  mardi    01 novembre 2022
   Armistice 1918      :  vendredi 11 novembre 2022
   Noël                :  dimanche 25 décembre 2022
 



Et le script :

#!/bin/bash

usage() {
    echo -e "Usage :   \033[1m${0##*/}  [-h,--help]   ANNEE\033[0m"
    echo
    echo -e "Lister les jours fériés d'une \033[1mANNEE\033[0m donnée en argument."
    echo
    echo "Option :"
    echo "    -h,--help    Afficher cette aide et quitter."
    echo
    echo -e "L'\033[1mANNEE\033[0m doit être du format \033[1mAAAA\033[0m."
    echo -e "Si \033[1mANNEE\033[0m est omis, utiliser l'année en cours."
    echo
    exit 0
}

err_opt() {
    echo -e "L'option '\033[1m$1\033[0m' n'est pas reconnue." >&2
    exit 1
}

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

echo "Jours fériés de l'année $an :"
echo

tmp=$(mktemp /tmp/date.XXXXXXXX)

echo "Jour de l'An:$(date --date=$an-01-01 +%s):" > "$tmp"
echo "Fête du Travail:$(date --date=$an-05-01 +%s):" >> "$tmp"
echo "Armistice 1945:$(date --date=$an-05-08 +%s):" >> "$tmp"
echo "Fête Nationnale:$(date --date=$an-07-14 +%s):" >> "$tmp"
echo "Assomption:$(date --date=$an-08-15 +%s):" >> "$tmp"
echo "Toussaint:$(date --date=$an-11-01 +%s):" >> "$tmp"
echo "Armistice 1918:$(date --date=$an-11-11 +%s):" >> "$tmp"
echo "Noël:$(date --date=$an-12-25 +%s):" >> "$tmp"
Paques=$(date --date=$(ncal -e $an | awk -F"/" '{print $3"-"$2"-"$1}') +%s)
echo "Lundi de Pâques:$((Paques+1*86400)):" >> "$tmp"
echo "Ascension:$((Paques+39*86400)):" >> "$tmp"
echo "Lundi de Pentecôte:$((Paques+50*86400)):" >> "$tmp"

while { read -d":" nom; read -d":" secondes; }
do
    if [[ $nom =~ â|ê|ë|ô ]]
    then
        long1=21
    else
        long1=20
    fi

    date="$(date --date=@$secondes "+%A %d %B %Y")"
    if [[ $date =~ é|û ]]
    then
        long2=10
    else
        long2=9
    fi
    printf "%-3s%-${long1}s%-3s%-9s%-3s%-${long2}s%-5s\n" "" "$nom" ":" $date
done <<< $(sort -n -t":" -k2 "$tmp" | tr -d "\n")

echo

rm "$tmp"

exit



Cela ne sert pas à grand chose mais c'était amusant big_smile

Au plaisir.

Dernière modification par Tawal (01-11-2021 16:40:34)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

En ligne

Pied de page des forums