#!/bin/bash # Fichier CSV contenant les horaires CSV_FILE="horaires.csv" # Traduction manuelle des jours (anglais -> français) declare -A JOURS_EN_FR=( ["Monday"]="Lundi" ["Tuesday"]="Mardi" ["Wednesday"]="Mercredi" ["Thursday"]="Jeudi" ["Friday"]="Vendredi" ["Saturday"]="Samedi" ["Sunday"]="Dimanche" ) # Liste des jours en français pour correspondre aux numéros (1 = Lundi, ...) JOURS=("Lundi" "Mardi" "Mercredi" "Jeudi" "Vendredi" "Samedi" "Dimanche") # Si l'argument est un chiffre (1 ou 2), on calcule le jour futur if [[ "$1" =~ ^[1-2]$ ]]; then # Calculer la date future DATE_FUTURE=$(date -d "+$1 day" +"%A") # Ex: "Sunday" JOUR=${JOURS_EN_FR[$DATE_FUTURE]} # Traduction # Vérifier si on change de semaine SEMAINE_NUM=$(date -d "+$1 day" +"%V") if ((SEMAINE_NUM % 2 == 0)); then SEMAINE="A" else SEMAINE="B" fi # Sinon, si l'argument est du type "3B" elif [[ "$1" =~ ^[1-7][AB]$ ]]; then JOUR_INDEX=${1:0:1} # Numéro du jour (1 = Lundi, ..., 7 = Dimanche) SEMAINE=${1:1:1} # A ou B JOUR=${JOURS[$((JOUR_INDEX - 1))]} # Sinon, on prend le jour actuel else JOUR_ANGLAIS=$(date +"%A") JOUR=${JOURS_EN_FR[$JOUR_ANGLAIS]} # Traduction SEMAINE_NUM=$(date +"%V") if ((SEMAINE_NUM % 2 == 0)); then SEMAINE="A" else SEMAINE="B" fi fi # Lire et filtrer le CSV HORAIRE=$(awk -F, -v jour="$JOUR" -v semaine="$SEMAINE" '$1 == jour && $2 == semaine {print $3}' "$CSV_FILE") # Afficher le résultat if [[ -n "$HORAIRE" ]]; then echo "Horaires de $JOUR (semaine $SEMAINE) : $HORAIRE" else echo "Aucun horaire trouvé pour $JOUR (semaine $SEMAINE)." fi