Quand last month n'est pas last month

Quand last month n'est pas last month
Photo by Towfiqu barbhuiya / Unsplash

Lorsque vous tapez dans le Bash de Linux : date +%Y%m -d '1 months ago', vous supposez que vous obtiendrez l'année et le mois du mois dernier.

Eh bien, pour une raison qu'il me reste à découvrir (probablement très logique), ce n'est pas le cas pour la date d'aujourd'hui :

$ date
lundi 31 octobre 2022, 00:11:30 (UTC+0100)
$ date +%Y%m -d '1 months ago'
202210

La solution que j'ai trouvée sur Stackoverflow consiste à compter le nombre de jours du mois jusqu'à aujourd'hui, et à les soustraire de la date du jour :

$ date +%d
31
$ date +%Y%m -d "31  day ago"
202209

A mettre dans vos scripts :

lastmonth=$(date +%Y%m -d "$(date +%d) day ago")

Traduit avec l'excellent www.DeepL.com/Translator (version gratuite)