Date mois precedent

denis24 Messages postés 6 Statut Membre -  
denis24 Messages postés 6 Statut Membre -
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
A voir également:

5 réponses

jipicy Messages postés 41342 Statut Modérateur 4 896
 
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
;-))
4
denis24
 
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
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
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. ;-)
0
denis24 Messages postés 6 Statut Membre
 
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
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
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]$
0
denis24 Messages postés 6 Statut Membre
 
je viens de faire echo $SHELL et ca donne /usr/bin/ksh
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 41342 Statut Modérateur 4 896
 
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.
;-(
0
denis24 Messages postés 6 Statut Membre
 
MERCI quand meme pour ton aide jipicy
@+
0