2017-07-05 1 views
0

J'essaye de passer les paramètres à l'outil de centre de test de Spirent utilisant des arguments de ligne de commande, où je passe des fentes, des ports, la taille d'armature et la charge. Je veux stocker les Slots et les ports dans le tableau, où le nombre de ports sont dynamiques. J'ai essayé code simple avec cmdline qui peut gérer des ports fixescmdline analyse des arguments en utilisant tcl?

package require cmdline 

set parameters { 
    {s.arg "" "Slot"} 
    {p.arg "" "Port"} 
    {l.arg "100" "Load"} 
    {f.arg "256" "Framesize"} 
    {debug  "Turn on debugging, default=off"} 
} 
#set option(l) 100 
set usage "- A simple script to demo cmdline parsing" 

if {[catch {array set options [cmdline::getoptions ::argv $parameters $usage]}]} { 
    puts [cmdline::usage $parameters $usage] 
} else { 
    parray options 
} 
#puts [array get options] 
puts $options(l) 
puts $options(f) 
scénario

sortie:

C:\Tcl\bin>tclsh opt.tcl -s 1 -f 128 
options(debug) = 0 
options(f)  = 128 
options(l)  = 100 
options(p)  = 
options(s)  = 1 
100 
128 

Ici, je voudrais passer tous les ports pour chaque fentes onetime,

tclsh opt.tcl -s 1 2 -p 11 12 13 14 -f 256 -l 100 

Où les emplacements sont 1 et 2 et les ports dans chaque emplacement sont 11,12,13,14 et doivent créer un ensemble de logements et de ports. Pourriez-vous suggérer une méthode pour y parvenir?

Répondre

0

Essayez

tclsh opt.tcl -s "1 2" -p "11 12 13 14" -f 256 -l 100 

Il fonctionne pour moi sous Windows 10, au moins. Le fait est que les listes de slots et de ports doivent avoir chacune une valeur: les guillemets assurent cela.

+0

Merci ça marche –

0

J'ai essayé la méthode suivante, avec quelques corrections:

 set arglen [llength $argv] 
    while {$index < $arglen} { 
    set arg [lindex $argv $index] 
    #puts $arg 
    switch -exact -- $arg { 
      -s { 
     set args($arg) [lindex $argv [incr index]] 
     set slot($y) $args($arg) 
     incr y 
      } 
     -p { 
      set args($arg) [lindex $argv [incr index]] 
      set port($z) $args($arg) 
      incr z 
      } 
      -l { 
       set args($arg) [lindex $argv [incr index]] 
       global Load 
       set Load $args($arg) 
       } 
      -f { 
       set args($arg) [lindex $argv [incr index]] 
       set frameLength $args($arg) 
       } 

      } 
      incr index 
      } 

Command pour exécuter:

  C:\Tcl\bin>tclsh l1.tcl -s 1 -p 11 -p 12 -l 10 -f 1