Calculer des dates en BASH et PERL

Dans le sens le plus traditionnel, qui est celui des scripts shell (BASH, PERL…) , un script sert principalement à lancer et coordonner l’exécution de programmes.

Donc voilà, j’ai du faire des petites recherches ce matin, afin de manipuler des dates en BASH pour l’un de mes scripts.
J’ai besoin de lancer des traitements, avec en paramètre des dates. Parfois, j’aurais besoin de récupérer la date du jour (facile), parfois d’autres dates, comme la veille, le dernier jour du mois précédent, etc… . Bien évidemment, parfois c’est facile, et parfois, cela l’est beaucoup moins.
Comme je ne travaille pas que sur des infrastructures Linux, mais surtout AIX, la commande date est limitée (ça n’est pas le date GNU).

Je pose ici mon petit pense-bête (un peu comme avec le history), un petit florilège, en BASH et en PERL qui me dépanne bien.

Avant tout, on charge quelques variables….

CURRENT_MONTH=$(date +%m)
CURRENT_YEAR=$(date +%y)

_MONTHP1=$(expr $CURRENT_MONTH + 1)
MONTHP1=$(printf "%02d\n" "$_MONTHP1")

_MONTHM1=$(expr $CURRENT_MONTH - 1)
MONTHM1=$(printf "%02d\n" "$_MONTHM1")

La date de la veille en PERL

YESTERDAY=$(perl -e '($s,$m,$h,$J,$M,$A) = localtime(time - 24*60*60) and printf("%02d\/%02d\/%04d\n", $J,$M+1,$A+1900)')
echo "Date de la veille =>" $YESTERDAY

La date du jour + 17 jours en PERL

JP17=$(perl -e '($s,$m,$h,$J,$M,$A) = localtime(time + 17*24*60*60) and printf("%02d\/%02d\/%04d\n", $J,$M+1,$A+1900)')
echo "Jour + 17 =>" $JP17

Le dernier jour du mois en cours en BASH

LDOC=$(cal $CURRENT_MONTH $CURRENT_YEAR | grep -v ^$ | tail -1 | sed 's/^.* \([0-9]*\)$/\1/')
echo "Dernier jour du mois en cours =>" $LDOC

Le dernier jour du mois suivant en BASH

LDOC=$(cal $MONTHP1 $CURRENT_YEAR | grep -v ^$ | tail -1 | sed 's/^.* \([0-9]*\)$/\1/')
echo "Dernier jour du mois suivant =>" $LDOC

Le dernier jour du mois précédent en BASH

LDOC=$(cal $MONTHM1 $CURRENT_YEAR | grep -v ^$ | tail -1 | sed 's/^.* \([0-9]*\)$/\1/')
echo "Dernier jour du mois précédent =>" $LDOC

Allez, amusez-vous bien !!!

A propos de Mehdi HAMIDA

Avec plus de 20 ans d’expérience dans la tech, je me suis spécialisé dans la gestion des données, le cloud (AWS, Snowflake) et l'architecture IT. Avant ça, j’étais expert technique et chef de projet sur des missions stratégiques. Je m'appelle Mehdi HAMIDA, et aujourd’hui, je partage simplement mes découvertes et connaissances à travers ce blog.

Lire aussi

Installer une VM Windows 11 sur Nutanix : guide pratique pour surmonter les obstacles

L’installation d’une VM Windows 11 sur Nutanix peut réserver quelques surprises, notamment des problèmes inattendus …

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *