[Shell] passer un script entre deux dates

Résolu
LOLO -  
 LOLO -
Voila je voudrais faire un script sh mais je n'y arrive pas, pouvez-vous m'aider ? Voici le problème :
je veux avec mon script lui passé une date de début et une date de fin.
Lui va prendre chaque jour de cette intervalle (date de debut et date de fin), pour le passé à une requette sql. pour la requete c'est bon je m'en sort, mais pour passer les date au requette ça ne marche pas. Le problème est :
par exemple pour une date de début 20070129 et une date de fin 20070203 le script lorsqu'il arrive au 20070131 il passe à 20070132, 20070133 ...ect.
moi je veux losqu'il arrive à la fin du mois de janvier il passe directement au mois de février
c-à-d : 20070131 puis 20070201 puis 20070202 ...ect.

voici que j'ai déjà fait:

#!/bin/sh
export datedeb=20070102
export datefin=20070124
echo $datedeb
echo $datefin
while [ $datedeb -lt $datefin ]
#Formatage du fichier SQL
do
echo $datedeb
./script.sh $datedeb
#extraction des flux de la BDD BASE
sqlplus user/motdepasse@nomdelabase @./script.sql;
export datedeb=$datedeb+1;
echo $datedeb
done
Configuration: Windows XP
Internet Explorer 7.0

4 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Plutôt que de grands discours...
    [jp@MDK tmpfs]$ cat foo.sh
    
    #! /bin/bash
    
    datedeb=$(date +%Y%m%d --date=20070227)
    datefin=$(date +%Y%m%d --date=20070310)
    
    while [ "$datedeb" != "$datefin" ]
    do
    echo "$datedeb est inférieur à $datefin"
    datedeb=$(date +%Y%m%d --date="${datedeb} 1 day")
    done
    
    [jp@MDK tmpfs]$ sh foo.sh
    
    20070227 est inférieur à 20070310
    20070228 est inférieur à 20070310
    20070301 est inférieur à 20070310
    20070302 est inférieur à 20070310
    20070303 est inférieur à 20070310
    20070304 est inférieur à 20070310
    20070305 est inférieur à 20070310
    20070306 est inférieur à 20070310
    20070307 est inférieur à 20070310
    20070308 est inférieur à 20070310
    20070309 est inférieur à 20070310
    
    [jp@MDK tmpfs]$  
    ;-))
    0
    1. LOLO
       
      Bonsoir,

      J'ai exécuté mon script :
      #!/bin/sh
      datedeb=$(date +%Y%m%d --date=20070227)
      datefin=$(date +%Y%m%d --date=20070310)
      while [ "$datedeb" != "$datefin" ]
      do
      echo "$datedeb est inférieur à $datefin"
      datedeb=$(date +%Y%m%d --date="${datedeb} 1 day")
      done
      Mais ça ne marche pas, j'ai le code erreur suivant :
      $ ./date9.sh
      : command not found
      : command not found
      ./date9.sh: line 13: syntax error: unexpected end of file

      Merci d'avance.

      LOLO
      0
    2. LOLO
       
      Rebonsoir,

      Ne pas tenir compte de mon dernier message
      ça marche c'était un problème de shell.

      Merci beaucoup pour vos lumières.

      LOLO
      0
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    même si tu as posté avant je vais écrire quand même mon travail :-))
    lami20j@debian:~/trash$ cat add_date.sh
    #!/bin/sh
    # à initialiser à j-1 pour commencer avec j 
    
    datedeb=20070127
    datefin=20070204
    while [ $datedeb -lt $datefin ]
    do
      datedeb=$(date +%Y%m%d -d "$datedeb 1 day")
      echo "$datedeb"
    done
    
    lami20j@debian:~/trash$ sh add_date.sh
    20070128
    20070129
    20070130
    20070131
    20070201
    20070202
    20070203
    20070204
    lami20j@debian:~/trash$
    
    0
    1. LOLO
       
      Bonsoir,

      J'ai exécuté mon script :
      $ ./date10.sh
      #!/bin/sh
      # à initialiser à j-1 pour commencer avec j

      datedeb=20070127
      datefin=20070204
      while [ $datedeb -lt $datefin ]
      do
      datedeb=$(date +%Y%m%d -d "$datedeb 1 day")
      echo "$datedeb"
      done

      Mais ça ne marche pas, j'ai le code erreur suivant :

      $ ./date10.sh
      : command not found
      date10.sh: line 11: syntax error: unexpected end of file

      Merci d'avance.

      LOLO
      0
    2. LOLO
       
      Rebonsoir,

      Ne pas tenir compte de mon dernier message
      ça marche c'était un problème de shell.

      Merci beaucoup .

      LOLO
      0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    ;-))
    0
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    exécute le script avec la commande
    sh -x  ./date10.sh 
    0