2010-11-15 6 views
1

Comment créer une variable unique dans TCL?comment créer une variable unique

Exemple:

exec echo $msgBody - /tmp/Alert_Notify_Work.$$ 
exec cat /home/hci/Alert.txt -- /tmp/Alert_Notify_Work.$$ 

Cela ne fonctionne pas; J'essaie de rendre la variable Alert_Notify_Work unique.

Répondre

2

$$ n'est pas valide syntaxe Tcl, et Tcl analysera cette ligne avant que le shell le voit. Mais il existe une commande Tcl pour récupérer le pid: pid. Je compte habituellement sur l'heure actuelle et le pid pour l'unicité.

Je suppose que msgBody est une variable Tcl, et le - et -- dans vos commandes doivent être respectivement > et >>.

Option 1

set filename /tmp/Alert_Notify_Work.[clock seconds].[pid] 
exec echo $msgBody > $filename 
exec cat /home/hci/Alert.txt >> $filename 

ou, Tcl seulement quelques lignes supplémentaires:

set f_out [open /tmp/Alert_Notify_Work.[clock seconds].[pid] w] 
puts $f_out $msgBody 
set f_in [open /home/hci/Alert.txt r] 
fcopy $f_in $f_out 
close $f_in 
close $f_out 
+0

+1: J'utilise 'horloge clicks' moi-même au lieu (ou fichier' fichtemp' en 8.6) mais ce que vous proposez des œuvres. –

+0

merci cela fonctionne bien –

5

Il est préférable d'utiliser une bibliothèque pré-existante pour cela. Tcllib a un paquet FileUtil qui implémente tempfiles:

set filename [fileutil::tempfile Alert_Notify_Work.] 
Questions connexes