Date mois precedent

bonjour,
je travaille sous le shell sh et j'ai un probleme avec cette commande:
MOIS_OLD=`date +%m|awk '{printf("%02i",$1==1?12:$1-1);}`
est-ce que quelqu'un peut m'aider à resoudre mon probleme:
quand je fais un echo de MOIS_OLD, ca m'affiche: %02ii
merci d'avance

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Salut,

    Il manque une quote simple ( ' ) avant la quote inversée ( ` ) à la fin de ta commande, ainsi qu'une séquence d'échappement pour le retour à la ligne ( \n ) dans le "%021" :
    MOIS_OLD=`date +%m|awk '{printf("%02i\n",$1==1?12:$1-1);}'`

    Mais t'aurais pu te contenter de :
    date --date='1 months ago' +%m
    ;-))
    1. merci pour la solution proposee mais malgre les modifications j'obtiens toujours %02ii avec la commande echo MOIS_OLD, est-ce que la solution avec date --date peut fonctionner sous le shell sh? merci d'avance
  2. Modérateur
    Re-

    Oui ;-))
    [jp@MDK tmpfs]$ echo $SHELL
    /bin/bash
    
    [jp@MDK tmpfs]$ ls -l /bin/sh
    lrwxrwxrwx  1 root root 4 déc 15  2005 /bin/sh -> bash*
    
    [jp@MDK tmpfs]$ date --date='1 months ago' +%m
    06
    
    [jp@MDK tmpfs]$ MOIS_OLD=`date +%m|awk '{printf("%02i\n",$1==1?12:$1-1);}'`
    
    [jp@MDK tmpfs]$ echo $MOIS_OLD
    06
    
    [jp@MDK tmpfs]$
    Tu dois avoir une erreur de syntaxe quelque part !!!
    Fais un "Copier/Coller" de tes comandes dans la console, s'teuplé, merci. ;-)
    1. merci pour ton aide, je te fais un copier coller des commandes:

      MOIS_OLD=`date +%m|awk '{printf("%02i\n",$1==1?12:$1-1);}'`
      echo $MOIS_OLD
  3. Modérateur
    Bon ben chez moi les mêmes commandes (copier/coller dans mon terminal) marchent à merveille !! :-\

    Reste à regarder peut être les versions de "bash" et de "awk" chez toi, et tant qu'à y être celle de "date" aussi :
    bash --version
    awk --version
    date --version
    Fais aussi un :
    echo $SHELL
    Quelle distrib utilises-tu ?

    Voilà ce que ça donne sur une Mandriva 2006 :
    [jp@MDK tmpfs]$ bash --version | sed -n 1p
    GNU bash, version 3.00.16(2)-release (i586-mandriva-linux-gnu)
    
    [jp@MDK tmpfs]$ awk --version | sed -n 1p
    GNU Awk 3.1.4
    
    [jp@MDK tmpfs]$ date --version | sed -n 1p
    date (coreutils) 5.2.1
    
    [jp@MDK tmpfs]$
    1. Modérateur
      Bon ben c'est que c'est le shell que tu utilises donc.
      Peut être que ça vient de là !!!

      Quoi que je viens de faire les tests chez moi et les 2 commandes passent sans soucis avec un shell "ksh".

      Là aussi peut être une question de version.
      Désolé, mais je ne vois plus quoi te dire.
      ;-(
      1. MERCI quand meme pour ton aide jipicy
        @+