Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1962 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Comment faire un tant que en shell

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment faire un tant que en shell

n°675918
enarta
Posté le 17-03-2004 à 10:30:25  profilanswer
 


Bonjours, je fais appel a votre savoir , MERCI
Il mest demandé de faire un prog de reduction de base de données  
Et je paine à optimiser
 
J'utilise pour cela un fichier parametre qui me dit :
 
01;user_source;user_cible;table_1;rubrique1
01;user_source;user_cible;table_1;rubrique1
02;.....
 
ma table_1 se trouve dans une machine de prod sous le USER_SOURCE je souhaite la reduire à partir de la rubrique_1 vers le USER_CIBLE
 
mon programme :
 
awk -F';' '
$1 == "01" { print $0 }
$1 == "02" { print $0 }
' $1 | while read record
do
       IFS=';' set  $record ""
  if  [ "$1" = "02" ]
  then
    echo "Ttitle "reduire : $2.$5 a partir de $3.$4  " skip 2 " >> $FICSQL
    echo "create table  ....... where ...; " >> $FICSQL
  elif [ "$1" = "01" ]
  then
    echo "Ttitle "reduire : $2.$4 a partir fichier Pilote dans $3 " skip 2 " >>
$FICSQL
    echo "create table .........where .....; " >> $FICSQL
  fi
done
 
Seulement pour eviter de saisir le USER_SOURCE et USER_CIBLE chaque fois , je souhaite le faire saisir dans un article 00
mon fichier parametre sera alors :
 
00;user_source;user_cible
01;;table_1;rubrique1
01;...
02...
00;user_source2;user_cible_2
01...
01...
 
Et donc j'aimerai pouvoir LIRE le fichier parametre ligne par ligne
si 00 alors j'affecte mes variable user_cible=    et user_source=    et je balaye jusqu'au prochain 00....et aisni de suite
 
MERCI
 
 

mood
Publicité
Posté le 17-03-2004 à 10:30:25  profilanswer
 

n°676030
aigles
Posté le 17-03-2004 à 12:07:30  profilanswer
 

Tu peux faire quelque chose dans le genre :
 

user_source=not_set
user_cible=not_set
 
while read record
do
  IFS=';' set  $record ""
  case "$1" in
    00)
       user_source=$2
       user_cible=$3
       ;;
    01)
       echo 'Ttitle "'"reduire : $2.$5 a partir de $3.$4  "'" skip 2 ' >> $FICSQL
       echo "create table  ....... where ...; " >> $FICSQL
       ;;
    02)
       echo 'Ttitle "'"reduire : $2.$4 a partir fichier Pilote dans $3 "'" skip2 ' >> $FICSQL
       echo "create table .........where .....; " >> $FICSQL
       ;;
  esac
done < $1


---------------
Jean Pierre.
n°676169
enarta
Posté le 17-03-2004 à 14:08:04  profilanswer
 

Merci à toi JP, ton algo fonctionne


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Comment faire un tant que en shell

 

Sujets relatifs
need help bourne-again shellShell - comparaison de fichiers de deux répertoires
Uitlisation de Tableaux en ShellScript shell / e-mail
[Shell] Merger 2 lignes d'un fichier sur la base d'un ID communshell
[shell] boucle for[PHP] PB avec safe_mode et shell_exec
ShellShell AIX 4.3 (pas de support Tableau), decoupage de nom de fichier ?
Plus de sujets relatifs à : Comment faire un tant que en shell


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR