Bonjour à tous,
Pour un script d'analyse de logs, j'ai besoin de trier des fichiers de logs, par mois, selon leur date.
En gros, logs de moins d'un moins, logs de un à deux mois...
Pour cela, je veux une variable contenant la date d'il y a 1, 2 ou 3 mois sous la forme AAAMMJJ.
Cela fonctionne, mais pour cela j'utilise la fonction date avec l'option -d. Or j'ai changé de machine et cette option n'existe pas sur celle-ci.
J'ai alors modifié mon script de façon à faire sans cette option. J'obtiens ceci :
Code :
- DATE_1MOIS=$((`date +%Y%m%d` - 100))
- #C'est sensé être la date d'il y a deux mois, mais j'ai poussé à 4 pour obtenir mon cas particulier (décembre)
- DATE_2MOIS=$((`date +%Y%m%d` - 400))
- # Idem DATE_2MOIS pour mon deuxième cas particulier
- DATE_3MOIS=$((`date +%Y%m%d` - 500))
- for i in $DATE_1MOIS $DATE_2MOIS $DATE_3MOIS
- do
- echo "Avant : $i"
- # si la date est de forme AAAA00JJ soit avec un mois égal a zéro
- if [ `echo $i | cut -c 5-6` -eq 0 ]
- then
- # On soustrait 10000 pour avoir l’année précédente...
- # ... et on ajoute 1200 pour atteindre le mois de décembre
- i=$(($i - 10000 + 1200))
- fi
- # si la date est de forme AAAAMMJJ avec le mois supérieur a 12
- if [ `echo $i | cut -c 5-6` -gt 12 ]
- then
- # On soustrait 8800 pour obtenir le mois entre 01 et 12 correspondant.
- i=$(($i - 8800))
- fi
- echo "fin de boucle :$i"
- done
- echo "Termine :"
- echo $DATE_1MOIS
- echo $DATE_2MOIS
- echo $DATE_3MOIS
|
Ma boucle for fonctionne bien, mais je n'arrive pas à sortir le résultat... Je ne sais pas si on peut modifier l'argument de la boucle pour qu'il soit utilisable plus tard. J'ai cherché sur le net, mais je n'ai rien trouvé.
Ma question : y'a-t-il une solution pour sortir mes trois argument de ma boucle ? Sinon, comment faire autrement ?
Merci de votre aide !
Message édité par NegroTruc le 11-04-2011 à 14:27:25