2010-11-15 32 views
1

如何使變量在TCL中唯一?我如何使變量唯一

實施例:

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

這不工作;我試圖使變量Alert_Notify_Work獨一無二。

回答

2

$$是無效的Tcl語法,並且Tcl將在shell看到它之前解析該行。但有一個Tcl命令來檢索pid:pid。我通常依靠當前時間和唯一性的pid。

我認爲msgBody是Tcl的變量,並在你的命令---應分別>>>

選項1

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

或者,TCL只用短短几行:

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:我會用'時鐘clicks',而不是我自己(或在8.6'文件tempfile'),但你認爲什麼樣的作品。 – 2010-11-16 09:49:54

+0

謝謝你的工作正常 – 2010-11-16 16:41:39

5

這是最好使用預先存在的庫這一點。 Tcllib具有實現臨時文件一fileutil包:

set filename [fileutil::tempfile Alert_Notify_Work.]