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

Langage Perl Discussion :

bash => Perl : passer des caractères spéciaux


Sujet :

Langage Perl

Vue hybride

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Par défaut bash => Perl : passer des caractères spéciaux
    Bonsoir à tous,

    Je suis en train de transformer un script "bash" en script "Perl".
    L'ancien script lance des séries de commandes très particulières ( caractères spéciaux), qui me pose des soucis.
    J'ai réussi à adapter ma première commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/local/bin/svdrpsend.pl mesg "Lancement..."> $OTV_LOG
    comme ceci (c'est OK)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print `/usr/local/bin/svdrpsend.pl mesg "Lancement..."> $OTV_LOG`;
    En revanche, je n'arrive pas à transformer la seconde (difficulté à traiter les nombreux caractères spéciaux):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan | grep "250 " | cut -d" " -f2`
    Pourriez-vous m'aider ?

    D'avance merci.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 124
    Par défaut
    Essaye sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan \| grep "250 " \| cut -d" " -f2`
    Certain caractères spéciaux nécessitent un "\" avant pour qu'ils apparaissent corectement dans la console ou autre.
    Car ils peuvent être utilisé sous perl.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @  définit un tableau
    $  définit une variable
    %  définit un tableau de hachage

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Par défaut
    Merci, j'ai essayé en vain :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system "$SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan \| grep "250 " \| cut -d" " -f2`";
    L'erreur est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [root@PCTEST otvepg2]# ./otvepg2vdr.pl
    Number found where operator expected at ./otvepg2vdr.pl line 41, near ""$SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan \| grep "250"
            (Missing operator before 250?)
    String found where operator expected at ./otvepg2vdr.pl line 41, near "250 " \| cut -d""
            (Missing operator before  " \| cut -d"?)
    String found where operator expected at ./otvepg2vdr.pl line 41, near "" \| cut -d" " -f2`""
            (Missing operator before  " -f2`"?)
    syntax error at ./otvepg2vdr.pl line 41, near ""$SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan \| grep "250"
    Execution of ./otvepg2vdr.pl aborted due to compilation errors.
    Et ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print ` "$SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan \| grep "250 " \| cut -d" " -f2` `;
    Cela ne passe pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [root@PCTEST otvepg2]# ./otvepg2vdr.pl
    Number found where operator expected at ./otvepg2vdr.pl line 41, near ""$SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan \| grep "250"
            (Missing operator before 250?)
    String found where operator expected at ./otvepg2vdr.pl line 41, near "250 " \| cut -d""
            (Missing operator before  " \| cut -d"?)
    String found where operator expected at ./otvepg2vdr.pl line 41, near "" \| cut -d" " -f2`""
            (Missing operator before  " -f2`"?)
    syntax error at ./otvepg2vdr.pl line 41, near ""$SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan \| grep "250"
    Execution of ./otvepg2vdr.pl aborted due to compilation errors.
    [root@PCTEST otvepg2]#
    Avez-vous une idée ?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 124
    Par défaut
    je comprend pas ta commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system "$SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan \| grep "250 " \| cut -d" " -f2`";
    $SAVED_CHANNEL doit récupérer le résultat de la commande ?
    ou c'est une variable qui doit être éxécutée ?

    Je te prend les 2 cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system ("$SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan \| grep \"250 \" \| cut -d\" \" -f2`");

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @SAVED_CHANNEL =`/usr/local/bin/svdrpsend.pl chan \| grep "250 " \| cut -d" " -f2`;

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Par défaut
    Désolé, j'aurais du être plus précis. Je veux mémoriser le résultat d'une commande? (Je dialogue avec une application DVB, et
    récupère le n° du canal actif. Exemple 1 pour TF1, 2 pour France 2 ...)

    La syntaxe est bien celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    system ("$SAVED_CHANNEL=`/usr/local/bin/svdrpsend.pl chan \| grep \"250 \" \| cut -d\" \" -f2`"); 
    print "valeur: $SAVED_CHANNEL\n";
    exit;
    Cela fonctionne presque !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [root@PCTEST otvepg2]# ./otvepg2vdr.pl
    sh: =18: command not found
    valeur:
    [root@PCTEST otvepg2]#
    Le canal actif est bien 18, mais la valeur n'est pas enregistrée dans $SAVED_CHANNEL.
    Je ne vois pas pourquoi la console me répond "sh:=18:"

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 124
    Par défaut
    Tu n'as pas essayé le 2ème cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @SAVED_CHANNEL =`/usr/local/bin/svdrpsend.pl chan \| grep "250 " \| cut -d" " -f2`;

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Par défaut
    Citation Envoyé par Hide
    Tu n'as pas essayé le 2ème cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @SAVED_CHANNEL =`/usr/local/bin/svdrpsend.pl chan \| grep "250 " \| cut -d" " -f2`;
    Super ! Cela marche merci beaucoup.
    Néanmoins, un truc m'échappe : pourquoi doit-on utiliser @VALEUR et non pas $VALEUR ?

    Merci.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 124
    Par défaut
    Si tu es sur que ce que va te renvoyez la commande est sur une seul ligne alors tu peux utiliser une variable $ mais si tu n'es pas sur , il est plus intéressant d'utiliser un tableau @

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Par défaut
    Citation Envoyé par Hide
    Si tu es sur que ce que va te renvoyez la commande est sur une seul ligne alors tu peux utiliser une variable $ mais si tu n'es pas sur , il est plus intéressant d'utiliser un tableau @
    C'est noté.
    Merci encore.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 26/03/2007, 16h20
  2. problème avec l'affichage des caractères spéciaux
    Par michelkey dans le forum Général Python
    Réponses: 4
    Dernier message: 19/08/2005, 08h09
  3. [XSLT] Remplacer par des caractères spéciaux
    Par OXyGN dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 29/07/2005, 17h30
  4. traitement des caractères spéciaux avec XSLT
    Par Mirgue dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 19/07/2004, 16h57
  5. Où trouver la liste des caractères spéciaux?
    Par gamez dans le forum Langage
    Réponses: 3
    Dernier message: 19/08/2003, 17h54

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