URL: https://linuxfr.org/forums/linux-general/posts/gestion-des-ann%C3%A9es-bissextiles-en-shell-bash Title: Gestion des années bissextiles en shell (bash) Authors: Dabowl_94 Date: 2005年11月22日T17:51:00+01:00 Tags: année_bissextile Score: 0 Bonjour à tous, Voilà, je cherche à gérer les années bissextiles dans un shell, le "cahier des charges" est le suivant: - Les années divisibles par 4 sont bissextiles, pas les autres. - Exception: les années divisibles par 100 ne sont pas bissextiles. - Exception à l'exception: les années divisibles par 400 sont bissextiles. Pour le moment, j'ai écrit un truc du genre: if [ $(($ANNEE % 4)) -eq 0 -a $(($ANNEE % 100)) -ne 0 -a $(($ANNEE % 400)) -eq 0 ] then echo $ANNEE est bissextile else echo $ANNEE non bissextile fi En gros ça dit, si le modulo de $ANNEE / 4 est nul, que le modulo de $ANNEE / 100 n'est pas nul et que le modulo de $ANNEE / 400 est nul, alors une année est considérée comme bissextile. Mais comme bash ne connaît que les entiers, je me demande si les modulo que je récupère à l'aide de l'opérateur % est bien valide ou pas, je m'explique: Prenons pour exemple, l'année 2008, elle est bien bissextile car d'après mon calendrier il y a bien un 29 février: echo $((2008 % 4)) ----> Modulo 0 donc divisible par 4 (clause 1 respectée) echo $((2008 % 100)) ----> Modulo 8 donc non divisible par 100 (clause 2 respectée) echo $((2008 % 400)) ----> Modulo 8 donc à priori pas divisible par 400, pourtant cette année est bissextile, mais il ne s'agit bien sûr que de l'exception à l'exception. Dois-je me baser uniquement sur la divisibilité par 4 et de la non-divisibilité par 100 pour dire qu'une année est bissextile ou non ? D'après certaines moules dont je tairai le nom, la prochaine "exception" ne sera qu'en 2100, mon code ne sera plus en prod c'est certain ;-)