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 :

Tester une variable égale au point d'exclamation


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Par défaut Tester une variable égale au point d'exclamation
    Bonjour,

    Je veux récupérer des chaînes de caractère à un endroit bien précis à l'aide d'un script bash
    Le document ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ---------
    ! var1 valeur1
    ! var2 valeur2
    ! var3 valeur3
    ----------
    J'ai donc penser faire une boucle de la ligne 2 à la ligne n et pour savoir quand s’arrêter il suffit que le premier caractère ne soit pas un !


    d'où la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for ((Ligne3 ; $(awk -v varx=$Ligne3 'NR==varx {print $1 }' $1)  -eq ! ;  Ligne3++))
            do
    Le problème c'est que ça marche pas puisque le point d'exclamation à une valeur logique.
    J'ai testé avec '!', "!" \! ....
    Mais rien n'y fait (j'ai sûrement pas tout testé) je pense que cela doit être possible mais malgré de recherche je n'ai pas trouvé comment faire le test sur le caractère et non ça valeur de négation à chaque fois j'ai le message opérateur mathématique non valable.
    Merci

  2. #2
    Membre éprouvé Avatar de Levi59
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 58
    Par défaut
    Normal puisque "-eq" est destiné aux test arithmétiques. Pour les tests de caractères, il faut utiliser "==".

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Par défaut
    Non ça ne marche pas j'ai testé les deux. En fait j'ai commencé par == et ça n'a pas marché.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Citation Envoyé par Erlen Voir le message
    Je veux récupérer des chaînes de caractère à un endroit bien précis à l'aide d'un script bash
    Dis-nous plutôt exactement ce que tu veux récupérer (ou pas récupérer), comment tu veux le récupérer (tout, une partie) et ce que tu veux en faire.

    Peut-être que bash n'est pas la solution la plus appropriée...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Par défaut
    Alors j'ai dans un ficher .out écrit une fois les paramètres et leurs valeurs après optimisation.
    Je veux récupérer les valeurs des paramètres pour les ré-injecter dans un nouvel input.

    Comme le nombre de mes paramètres est variable je veux pouvoir les récupérer dans un cas général.
    Je connais une pattern qui n'apparait qu'une fois 5 lignes au dessus du debut des paramètres.

    Comme il est précisé dans l'exemple, le premier caractère de la ligne est un point d'exclamation. Une fois la liste des paramètres écrites il y a une ligne de tiret.
    Je veux que la boucle récupère $2 et $3 tant que $1 est un point d'exclamation.
    D’où le test sur le point d'exclamation.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    $ cat plop 
    blablabla
    bla bla bla
    bla
    ---------
    ! var1 valeur1
    ! var2 valeur2
    ! var3 valeur3
    ----------
    blablabla
    bla bla bla
    bla
     
    $ sed -n '/^--*/{:z;n;/^!/{s/[^ ]* //p;bz}}' plop 
    var1 valeur1
    var2 valeur2
    var3 valeur3
     
    $
    Après, à défaut d'un exemple concret, il faudra sûrement adapter par rapport à Je connais une pattern qui n'apparait qu'une fois 5 lignes au dessus du debut des paramètres.


  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Par défaut
    Mais avec cette méthode comment je sais quand je dois arreter la boucle ? La je faisais ca au moyen du test sur le point d'exclamation. Je pense que si je fais le test logique sur le tiret le problème sera le même.

    Il n'y a donc aucune méthode pour comparer un caractère au point d'exclamation ?

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Le test s'effectue avec /^!/ dans ma syntaxe.

    Après comme je te l'ai dit, il nous faudrait un exemple plus concret pour ajuster la syntaxe au millimètre près

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/09/2006, 21h08
  2. tester une variable
    Par NeHuS dans le forum ASP
    Réponses: 2
    Dernier message: 17/02/2006, 15h38
  3. [coldfusion] Tester une variable
    Par mandaillou dans le forum Coldfusion
    Réponses: 1
    Dernier message: 29/09/2005, 11h04
  4. Tester une variable
    Par ZiT dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/07/2005, 14h49
  5. NASM Tester une variable d'environnement à la "compilat
    Par Pierre Maurette dans le forum Assembleur
    Réponses: 1
    Dernier message: 10/06/2005, 13h27

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