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 :

argument avec espace passé en ligne de commande


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut argument avec espace passé en ligne de commande
    Salut,


    J'ai un script qui gère mal les arguments dans @ARGV, car il sépare en plusieurs arguments lorsqu'il y a un espace dans un argument, alors que ce dernier est pourtant mis entre ""

    quelqu'un saurait-il comment régler ce léger problème ?

    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    La réponse dépend du script. C'est le shell qui se charge de mettre les bons arguments dans @ARGV, donc tu ne peux rien faire si le dysfonctionnement est du côté du shell (ou plutôt du côté de la personne qui a mal rédigé les arguments du script). Cependant tu sembles dire que le script lui-même redécoupe les arguments qui lui sont donnés ? Dans ce cas il suffit de modifier le script pour qu'il ne fasse plus cela. A moins qu'il y ait une réelle raison pour ce comportement ?

    --
    Jedaï

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 603
    Par défaut
    Sinon, comment récupères-tu les données rangées dans @ARGV ?

    Peut-on voir un bout de ton code ?

  4. #4
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    je récupère les arguments contenus dans @ARGV avec
    car le nombre d'arguments n'est pas connu à l'avance...

    pour ce qui est de l'appel du script via le shell, je lance :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ./mon_script.pl "[ejfdjhgdf]courant d'air" courant_d-air
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  5. #5
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Dans ce cas le problème n'est pas dans le parsing des arguments, mais plutôt dans leur utilisation... Un exemple courant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my $var = shift;
    system "command $var";
    Si tu appelles ce script avec comme paramètre "hello world", $var contiendra hello world (sans les guillemets), d'où plantage quand tu utilises system avec une commande qui n'attend qu'un seul argument...

    La solution dans ce cas est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my $var = shift;
    system 'command', $var;
    (D'une manière générale, il vaut toujours mieux utiliser la version à plusieurs arguments de system() ou exec(), sauf si on a explicitement besoin que la ligne de commande soit interprétée par un shell)

    Evidemment il y a d'autres endroits où cela peut poser problème, sans ton script, nous ne pouvons pas t'en dire plus.

    --
    Jedaï

  6. #6
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    non je n'utilise pas system ensuite... je fais juste un echo pour le moment

    en gros, c'est un script pour renommer des fichiers...

    donc je lis le premier nom de fichier, le nouveau nom, et j'utilise rename... avec tous les tests qui vont bien.
    or a cause de l'espace, ça passe pas
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

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

Discussions similaires

  1. Config de ssh pour se connecter avec le mot de passe en ligne de commande
    Par arrakis75 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 12/06/2013, 23h09
  2. Taille d'un argument passé en ligne de commande limité !
    Par benthebest dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 06/05/2010, 13h30
  3. Argument passé en ligne de commande
    Par katoyi dans le forum VB.NET
    Réponses: 1
    Dernier message: 09/10/2008, 10h45
  4. Récupérer des arguments passé en ligne de commande
    Par FinalSpirit dans le forum VBScript
    Réponses: 2
    Dernier message: 01/10/2007, 10h54
  5. Réponses: 3
    Dernier message: 03/03/2007, 19h50

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