hello à tous,
petite question pour les développeurs unix, j'essaie d'afficher le résultat d'une concaténation entre un char et un num sous unix et cela ne marche pas. Voici le bout de code en question
previousMonth=$((`date -u +%m` -1))
--> corresponds 9
if [ 1 <= $previousMonth <= 9 ]; then
echo "0$previousMonth"
--> il m'affiche 9 au lieu de 09
PS : y a t il un moyen avec date d'avoir le format mm dans une variable d'affectation
merci
# printf est la solution
Posté par fearan . Évalué à 6.
toto=1
titi=$(printf "%02d" $toto)
echo $titi
affiche 01
voila a+
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
# Marrant
Posté par skeespin (site web personnel) . Évalué à 4.
PreviousMonth=`printf %.2d $(( $(date +"%m") - 1 + ( ( 13 - (date +"%m") ) /12 ) * 12 )) `
Simple !
[^] # Re: Marrant
Posté par skeespin (site web personnel) . Évalué à 3.
Cette commande gère donc le changement d'année
Je n'utilise pas le "-d" de date car je travaille sous plusieurs Unix en même temps.
# Tu as vraiment testé ton code ?
Posté par Matthieu Moy (site web personnel) . Évalué à 4.
previousMonth=$((`date -u +%m` -1))
echo "0$previousMonth"
affiche bien 09. Pour la condition du if, je serais bien surpris que tu trouves un seul shell qui interprete ça sans erreur.
# Il y a plus simple
Posté par Khâpin (site web personnel) . Évalué à 3.
il y a (à mon avis) plus simple: utiliser l'option -d de date:
$ date '+%m' -d "1 month ago"
09
Ça marche aussi pour avoir la date du dernier samedi, etc.:
$ date '+%d/%m' -d "last saturday"
22/10
voilivoilou
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.