Programmation.shell : Afficher les dates des 100 derniers jours

Posté par mc_arnaud () le 07 mai 2008
0

Bonjour (ou plustot "bonne nuit", il est 2h10),



J'ai envie d'afficher les dates des 100 derniers jours dans un format bien précis. Pour ce qui est du format c'est bon, j'ai trouvé (man date). Par contre je n'ai pas réussi à scripter la récursivité. Voila ce que j'ai essayé et qui me parraissait bon :

for i in $(seq 1 100); do

date +"%d%m%Y" --date '($i) days ago';

done

Ce qui me donne 100 fois la date d'hier !



Si je fais

for i in $(seq 1 100); do

echo $i;

done

j'ai bien les chiffres 1 à 100 qui s'affichent.



Il y a donc quelque-chose qui m'échappe : si ça fonctionne avec echo, pourquoi ça ne fonctionnerai pas avec date ? Et comment je fais moi maintenant pour avoir mes 100 dates sans avoir à les taper une à une à la mimine ?



--

Rénald.

> Lire le message (9 commentaires, moyenne: 2,8).  

Vous avez demandé le commentaire #928915.

C'est simple

Posté par Physche () le 07/05/2008 à 07:38. (lien). Évalué à 8.

D'abord, je ne comprend pas pourquoi tu écris "($i)" à la place de "$i". Ça ne marche simplement pas. Ensuite, si tu utilises des guillemets simples, les variables ne sont pas interprétés. Pour qu'une variable soit interprétée, il faut utiliser des guillemets doubles. Il aurait donc fallu écrire :

for i in $(seq 1 100)
    do  date +"%d%m%Y" --date "$i days ago"
done
Ce qui marche très bien.

[ Répondre ]

  • [^]Re: C'est simple

    Posté par mc_arnaud () le 07/05/2008 à 12:44. (lien). Évalué à 1.

    Merveilleux, ça marche avec les guillemets doubles et sans les parenthèses. J'avais mis des guillemets simples parce que j'avais récupéré la commande date +'%d%m%Y" --date "3 days ago' dans un ancien script, et sans variable, les guillemets simples font très bien l'affaire.

    Merci pour votre aide en tout cas.

    --
    Rénald

    [ Répondre ]