Date mois precedent

Fermé
denis24 Messages postés 6 Date d'inscription lundi 24 juillet 2006 Statut Membre Dernière intervention 25 juillet 2006 - 24 juil. 2006 à 18:09
denis24 Messages postés 6 Date d'inscription lundi 24 juillet 2006 Statut Membre Dernière intervention 25 juillet 2006 - 25 juil. 2006 à 17:03
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 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
24 juil. 2006 à 18:57
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
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 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
25 juil. 2006 à 11:01
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 Date d'inscription lundi 24 juillet 2006 Statut Membre Dernière intervention 25 juillet 2006
25 juil. 2006 à 12:07
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 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
25 juil. 2006 à 12:29
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 Date d'inscription lundi 24 juillet 2006 Statut Membre Dernière intervention 25 juillet 2006
25 juil. 2006 à 14:23
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 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
25 juil. 2006 à 15:55
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 Date d'inscription lundi 24 juillet 2006 Statut Membre Dernière intervention 25 juillet 2006
25 juil. 2006 à 17:03
MERCI quand meme pour ton aide jipicy
@+
0