Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/05/2011, 12h27   #1
Invité de passage
 
Femme lise mahonde
Administrateur de base de données
Inscription : mai 2011
Messages : 1
Détails du profil
Informations personnelles :
Nom : Femme lise mahonde
Localisation : Cameroun

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mai 2011
Messages : 1
Points : 0
Points : 0
Par défaut besoin d'aide pour un script bash

Bonjour à tous.

J'ai un script qui doit :
  • au préalable selectionner les noms de fichiers prets pour le chargement
  • ensuite insérer les données des fichiers portant ce mot dans une base de données
  • par la suite il verifie que les données chargées sont les meme que celles que nous avons dans le repertoire
  • si les données sont les memes ou pas on insère les données dans la base etllogs.


Mais à l'exécution , on a :

Code :
1
2
./test: line 13: syntax error near unexpected token `|'
./test: line 13: `for $nomfichier in [ $REQUETE | awk -F" " '{for (i=2; i<=NF; i++) print $i; system("echo");}' | sort -u ] '
Voici le script :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/bash
PLATFORM="SMSC_"
TARGETDIR="/data/smsc/mvFiles"
Fdate=`date -d 'today' +"%Y-%m-%d"`
Ddate=`date -d 'today' +"%Y-%m-%d"`
AUJOURDHUI=`date -d 'today' +"%Y-%m-%d"`
nbLinesFiles=`wc -l $nomfic`
nbLinesInsert=`wc -l`
 
# Verifier que le fichier est pret a etre charge
REQUETE=`mysql -D etllogs -e "SELECT nomFichier FROM tbprechargement WHERE pretPourChargement=1"`;
 
#echo $REQUETE > test.log
 
#REQUETE2=`echo $REQUETE | awk -F" " '{for(i=2; i<=NF; i++) print $i; system("echo");}' `;
echo $REQUETE | awk -F" " '{for(i=2; i<=NF; i++) print $i; system("echo");}'| sort -u;
#echo $REQUETE2;
 
#chargement effectif des donnees
for $nomfichier in $REQUETE | awk -F" " '{for (i=2; i<=NF; i++) print $i; system("echo");}'| sort -u
   do
     awk -F '{
        sqlcode="INSERT INTO smsc VALUES('\''"$1" "$2"':00\'',"$3","$4","$5","$6","$7","$8","$9","$10","$11");"
        system("echo -n  '$AUJOURDHUI' '$begin'");
                         system("echo -n  \"" sqlcode "\"+E: ");
                         system("mysql -D qosva -e \"" sqlcode "\"");
                        system("echo  ");
}' >>loading
 
echo  $loading;
 
    if  diff <(cd $TARGETDIR; find . -printf "%p\t%s\n"|sort) <(cd $loading; find . -printf "%p\t%s\n"|sort)
   then
       echo " annuler le chargement"
       #insertion des donnees dans la base etllogs
       requete_1=`mysql -D etllogs -e "INSERT INTO metadata(nomFichier,nomPlateforme, nbLinesFile, dateChargementDonnees,dateDebutExec,dateFinExec, nbLinesInsert) VALUES('$TARGETDIR$nomfic', '$PLATFORM', '$AUJOURDHUI', '$Ddate', '$Fdate', '$NLinsert');"`
   else
      echo "le chargement est effectue"
      requete=`mysql -D etllogs -e "INSERT INTO metadata(nomFichier,nomPlateforme, nbLinesFile, dateChargementDonnees,dateDebutExec,dateFinExec, nbLinesInsert,etatChargement) VALUES('$nomfic', '$PLATFORM','$nbLinesFiles', '$AUJOURDHUI', '$Ddate', '$Fdate', '$nbLinesInsert');"`
 
exit
Merci d'avance de votre aide.
llove est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 13h15   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 153
Points : 4 153
Bonjour,

le for n'est pas fermé, le if non plus.

relis dans le man de BASH les lignes concernant ces commandes composées.

awk 'system("echo")' est un non-sens.
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h35.


 
 
 
 
Partenaires

Hébergement Web