J'essaie d'obtenir le dernier jour du mois en cours, ou le mois dernier, ce que j'utilise pour contourner ce "problème" est de vérifier avec:
if [ $DAY -eq 1 ]; then code here; fi
Si le jour est 1, donc ça veut dire que je suis dans le nouveau mois, donc je dois aussi faire une sauvegarde domy.
Avez-vous une idée de comment puis-je vérifier si aujourd'hui est le dernier jour du mois "31 janvier" par exemple ???
Merci !!!!
3 Réponses :
Une façon serait d'utiliser la date GNU:
if [[ $(date -d "+1 day" +%m) != $(date +%m) ]] then echo "Today is the last day of the month" else echo "Today is NOT the last day of the month" fi
Cela vous donne le dernier jour du mois précédent
if [[ $(date +%d%m%Y -d "-$(date +%d) days +1 month") != $(date +%d%m%Y) || $(date +%d%m%Y -d "-$(date +%d) days -0 month") != $(date +%d%m%Y) ]] echo "Today is NOT the last day of the month" else echo "Today is the last day of the month" fi
et cela vous donne le dernier jour du mois en cours
date -d "-$(date +%d) days +1 month"
date -d "-$(date +%d) days -0 month"
Si vous êtes le 30 (dernier jour du mois dernier), "+1 mois" ne vous renvoie pas au 31 de ce mois.
Obtenir le dernier jour d'un mois est parfois difficile, car tous les mois n'ont pas le même nombre de jours, bien sûr.
Une façon de le faire est d'obtenir le premier jour de ce mois, ajoutez un mois à cela (pour obtenir le premier jour du mois suivant), puis soustraire un jour.
date --date="$(date +%Y-%m-01) +1 month -1 day" '+%F' 2019-01-31
Et rappelez-vous que date
peut afficher le format de votre choix (argument commençant par +
).
date --date="$(date +%Y-%m-01) +1 month -1 day" thu jan 31 00:00:00 -07 2019
Voir man date
pour plus d'infos ou info '(coreutils ) date invocation '
pour encore plus.
C'est exactement ce que je recherchais: la logique de calcul claire! Merci