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

Tcl/Tk Discussion :

Passer un paramètre à un programme TCL


Sujet :

Tcl/Tk

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 32
    Par défaut Passer un paramètre à un programme TCL
    Bonjour,
    je veux exécuter un programme .tcl et lui passer un paramètre comme le nom d'un fichier.
    Pouvez-vous s'il vous plaît me montrer comment faire. ou me cpnseiller des liens utils.
    Merci par avance.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 351
    Par défaut
    Bonsoir,

    Il existe dans Tcl des variable globales particulières pour cela:

    argv0 : le nom du script
    argv : les arguments (c'est une liste)
    argc : le nombre d'arguments (valant [llength $argv])


    Exemple d'utilisation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #!/bin/sh
    # The next line runs tclsh, passing the \
    # arguments of this shell script to it. \
    exec tclsh "$0" "$@"
     
    # triadd.tcl
     
    foreach {a b c} $argv {}
     
    proc TriAddition {a b c} {return [expr {$a + $b +$c}]}
     
    puts "Résultat [TriAddition $a $b $c]"
    L'exécution du code se fait comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    # Unix à la console shell
     
    % triadd.tcl 1 2 4
     
    # Windows à la console DOS
     
    % "c:\Program Files\Tcl85\tclsh.exe" c:\Sources\triadd.tcl 1 2 4
    Cordialement,


    ----
    Canvas

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 7
    Par défaut
    Bonjour à tous,

    Je bloque sur un petit truc.
    J'aimerais savoir comment passer plusieurs paramètres de la même manière que ce que vous montrez avant mais via <script>.

    Je n'arrive qu'à en passer un seul.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <script>
    testdir = "C:/Program Files/Ixia/IxChariot"
    AddDest = "172.20.200.205"
    </script>
    <process>
    		<location>'mamachine'</location>
    		<command>'tclsh testD.tcl %s' %(AddDest)</command>
    		<workdir>testdir</workdir>
    </process>
    J'aimerais pouvoir ajouter une autre adresse ip dans script et l’intégrer à la suite de ma commande pour les récupérer dans mon fichier TCL sans avoir à taper les adresses ip comme ceci même si ça marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <command>'tclsh testD.tcl 172.20.200.215 172.20.200.205'</command>
    Mais comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <command>'tclsh testD.tcl "AddSource" "AddDest"'</command>
    FICHIER TCL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach {AddSource AddDest} $argv {}
    set e1 $AddSource
    set e2 $AddDest
    ...
    Merci d'avance.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Comme tes <script></script> et <process></process> ne sont pas du Tcl standard, on ne peut pas t'aider hors contexte.

    Par contre, ton histoire ressemble assez à du XML pour que tu utilises tDom pour lire un XML et transformer les éléments en liste Tcl (voir http://wfr.tcl.tk/1543).

    Sinon, ton foreach est mal écrit, pour que ça marche il fait faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach {AddSource AddDest} $argv {
    	set e1 $AddSource
    	set e2 $AddDest
    	...
    }
    Sinon, seule les dernières instances de AddSource et AddDest seront traitées.

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/01/2013, 19h15
  2. [Batch] passer un paramètre à un programme avec la commande CALL
    Par vbcasimir dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 28/09/2009, 11h42
  3. Réponses: 2
    Dernier message: 17/07/2008, 19h26
  4. Passer des paramètres à un programme
    Par Cravis dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 08/11/2007, 14h32
  5. Réponses: 4
    Dernier message: 19/10/2006, 18h04

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