Forum Programmation.shell concaténer un char et un num dans une variable

Posté par  .
Étiquettes : aucune
0
24
oct.
2005
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  . Évalué à 6.

    en shell, il existe la commande printf
    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  (site web personnel) . Évalué à 4.

    J'ai fait ca la semaine derniere:
    PreviousMonth=`printf %.2d $(( $(date +"%m") - 1 + ( ( 13 - (date +"%m") ) /12 ) * 12 )) `

    Simple !
    • [^] # Re: Marrant

      Posté par  (site web personnel) . Évalué à 3.

      Il manque un petit "$" dans le deuxième "$(date +"%m") )"

      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  (site web personnel) . Évalué à 4.

    Chez moi,

    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  (site web personnel) . Évalué à 3.

    Bonjour,

    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.