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)