2014-06-24 20 views
5

Ho uno script TCL che ha molti parametri definiti come argomenti. Ho intenzione di creare un file di lavoro in cui posso eseguire lo script .tcl con diverse combinazioni dei parametri senza l'intervento manuale.Passare argomenti dalla riga di comando in uno script tcl

Quello che voglio dire è la seguente:

file di lavoro (run.sh):

./main.tcl arg1 arg2 arg3 arg4 
./main.tcl arg1 arg3 arg5 

Ora voglio essere in grado di passare l'argomento di matrice "argv" riga di comando per ogni corsa menzionato in run.sh come array nello script main.tcl in modo che le opzioni siano impostate di conseguenza all'interno dello script prima dell'esecuzione.

C'è un modo per collegare lo script .sh e lo script .tcl?

+0

All'interno dello script della shell è possibile fare riferimento all'elenco di tutti gli argomenti come $ @. Quindi dì "main.tcl $ @" –

+0

@JohnC - grazie per la risposta! ok, quindi se faccio ./main.tcl $ @ all'interno del mio run.sh, allora come posso recuperare gli argomenti all'interno di main.tcl? usando argv? – pypep278

+0

Penso che la risposta qui sotto copra quella per te. –

risposta

6

Per online document here:

Il metodo con cui i numeri possono essere passati in, e utilizzati da uno script, è la seguente.

argc script argv argv0

Tutti Tcl hanno accesso alle tre variabili predefinite. $ argc: numero di argomenti passati a uno script. $ argv - lista degli argomenti. $ argv0 - nome dello script.

Per utilizzare gli argomenti, lo script potrebbe essere riscritto come segue.

if { $argc != 2 } { 
    puts "The add.tcl script requires two numbers to be inputed." 
    puts "For example, tclsh add.tcl 2 5". 
    puts "Please try again." 
} else { 
    puts [expr [lindex $argv 0] + [lindex $argv 1]] 
    } 
+0

Questo link è morto ora. – Brian

+0

Nota che scritto in questo modo, equivale a una vulnerabilità di comando di iniezione, prova con 'tclsh that-script '[exec sh -c {id>/dev/tty; echo 1}] '2' per esempio. Meglio con 'puts [expr {[lindex $ argv 0] + [lindex $ argv 1]}]'. –

0

In aggiunta alla risposta di cui sopra, ho trovato la seguente utile:

Per l'esecuzione entro QuestaSim/Modelsim/Quarto ho seguito la seguente risorsa: http://www.alteraforum.com/forum/showthread.php?t=3034

In genere siamo in grado di eseguire. script tcl con il comando source, ma questo non inerisce gli argomenti come gli script di base .tcl possono essere usati normalmente. Quindi, usando un processo, puoi ottenere la stessa cosa.

Problemi correlati