Rechercher : dans
Par :

[Shell] passer un script entre deux dates

Dernière réponse le 29 jan 2007 à 00:25:29 LOLO, le 28 jan 2007 à 14:59:18 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [Shell] passer un script entre deux dates » dans :
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha-Bang Premièrement,...
Script d'administration Linux VoirScript d'administration Linux Ce script entièrement rédigé pour ceux qui souhaitent approfondir leurs connaissances en scripting Linux. Vous pouvez reprendre des briques de code, l'améliorer, il est là pour ça ! NOTA : Il se peut qu'il...
Systèmes UNIX - Le shell VoirIntroduction au shell L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire entre le système...

1

jipicy, le 28 jan 2007 à 16:01:26

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]$  
;-)) Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

4

LOLO, le 28 jan 2007 à 23:59:29

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

Répondre à LOLO

6

LOLO, le 29 jan 2007 à 00:22:41

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

Répondre à LOLO

2

lami20j, le 28 jan 2007 à 16:32:04

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$
lami20j

Répondre à lami20j

5

LOLO, le 29 jan 2007 à 00:11:53

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

Répondre à LOLO

7

LOLO, le 29 jan 2007 à 00:25:29

Rebonsoir,

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

Merci beaucoup .

LOLO

Répondre à LOLO

3

jipicy, le 28 jan 2007 à 17:00:40

;-))
Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

8

 lami20j, le 29 jan 2007 à 00:25:26

Re,

exécute le script avec la commande

sh -x  ./date10.sh 
lami20j

Répondre à lami20j