IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Controle de saisie sous linux shell bash


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 3
    Points : 6
    Points
    6
    Par défaut Controle de saisie sous linux shell bash
    Bonjour, je viens de dévlopper un script bash qui demande à l'utilisateur de saisir une requête sql. Cette requête doit être verifier puis afficher une autre fois à l'utilisateur. La vérification doit etre syntaxique (le syntaxe de requete).
    Le script est celui-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #! /bin/bash
     
    read -p "saisir votre requete: "  req
    printf "%s\n" "$req" > t1.txt 
    {
    }
    echo "  votre requete est valide"
    Comme vous voyez, la partie entre les deux acolades est celle de vérification mais je n'arrive pas à le réaliser puisque j'ai pas connu comment et avec quelles commandes je veut le faire.

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    Si tu ne sais pas ce que tu veux faire, personne ne peut le faire à ta place, ni même t'aider à te rapprocher de ton objectif.

    Reviens quand tu auras travaillé un minimum.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    En fait, tu voudrais savoir s'il existe une commande toute faite qui permet de tester la syntaxe d'une requête SQL sans l'exécuter?

    J'imagine qu'il doit bien exister une telle commande sur ton SGBD, comme afficher le plan de la commande, mais ce n'est pas une question relative au forum "Shell et commandes GNU". À ta place, je poserais la question dans un forum SGBD/SQL, en précisant de quel SGBD il s'agit.

  4. #4
    Candidat au Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Points : 4
    Points
    4
    Par défaut plop
    Bon c'est pas uuultra clair ta question mais tâchons de répondre avec ce que l'on a...

    Tu aimerais faire une vérification syntaxique de ta requête...moué bon comme dit plus haut ton DBMS doit certainement pouvoir le faire. Si par contre tu désires réellement que ton script le fasse de lui-même plusieurs solutions s'offrent à toi :

    1-Utiliser une clause like dans des structures de contrôle "if" afin de "formater" ta requête. Ceci t'assurera un contrôle de la syntaxe mais -hormis si tu pousses le vice et réalises des vérifications assez tordues sur les tables, colonnes et restrictions possibles et encore...- il sera très compliqué sans avoir de retour du DBMS de vérifier la requête.
    Voici un exemple de vérifications possible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    req="SELECT ma_colonne FROM ma_table WHERE mes_restrictions;"
    if [[ ${req} =~ ^SELECT.*FROM.*WHERE.* ]];then
       echo "gagné"
    else
       echo "perdu"
    fi
    gagné
    2-La meilleure des deux que je te propose :

    Stockes ta requête dans une variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ma_requete=`sqlplus -s ${v_id_dbms} <<SQL1
       SELECT * FROM ma_table
       WHERE mes_restrictions;
    SQL1`
    Ton DBMS te fera un retour qui sera donc stocké dans ta variable et en fonction de sa valeur tu sauras si la requête avait une syntaxe correcte.
    Ex :
    Ici par exemple avec la commande grep je vais compter le nombre de fois ou "no rows selected" est renvoyé (DBMS oracle 11g).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    echo $ma_requete
    ma_requete=`echo $ma_requete | grep -c "no rows selected"`
    if [[ $ma_requete = 1 ]];then
       echo "Perdu"
    else
       echo "gagné"
    fi

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/06/2014, 12h03
  2. Récupérer une adresse IP sous Linux Shell
    Par Alaa-linux dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 02/09/2013, 09h04
  3. Controler la souris sous linux "comme" win32.dll
    Par openmind38fr dans le forum GTK+ avec Python
    Réponses: 0
    Dernier message: 13/10/2009, 14h44
  4. [VB]Control de saisie sous vb6 !
    Par Shypster dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 19/01/2006, 15h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo