我如何使变量唯一

时间:2010-11-15 18:37:48

标签: tcl

如何在TCL中使变量唯一?

示例:

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

这不起作用;我试图使变量Alert_Notify_Work唯一。

2 个答案:

答案 0 :(得分:5)

最好使用预先存在的库。 Tcllib有一个实现临时文件的fileutil包:

set filename [fileutil::tempfile Alert_Notify_Work.]

答案 1 :(得分: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