我必须只创建一个名为$ Project的变量。需要在此项目下创建仪器的多个端口。没有任何函数调用代码如下所示:
set Project(1) [stc::create "Project" \
-SelectedTechnologyProfiles {eoam ospfv2 isis dhcp} \
-ConfigurationFileName {new.tcl} \
-Active "TRUE" \
-LocalActive "TRUE" \
-Name {Project 1} ]
# create ports
set Port(1) [stc::create port -under $Project(1) -location //$ipaddress/1/1 ]
set Port(2) [stc::create port -under $Project(1) -location //$ipaddress/1/2 ]
现在,如果我创建一个名为" create_project"另一个名为" create_ports" (可能会多次调用,具体取决于端口数),那么我的问题是如何将$ Project传递给create_ports?应该create_project返回$ Project,我必须再次传递$ Project到create_ports?或者,有一些更简单的方法来实现这一目标?
请建议。
答案 0 :(得分:0)
您可以轻松地链接命令调用; [
... ]
语法完全是通用的。
set port [stc::create port -under [stc::create Project ...] ...]
这样做是否一个好主意完全取决于你的程序在做什么。 (这些规则适用于与任何其他命令相同的过程;过程只是使用与本地堆栈帧一起运行的脚本实现的命令。)
答案 1 :(得分:0)
您可能需要以下内容:
proc create_project {name number} {
return [stc::create "Project" \
-SelectedTechnologyProfiles {eoam ospfv2 isis dhcp} \
-ConfigurationFileName new.tcl \
-Active TRUE \
-LocalActive TRUE \
-Name "$name $number" \
]
}
proc create_port {project number} {
global ipaddress
return [stc::create port -under $project -location //$ipaddress/1/$number ]
}
set pname "Project"
set pnum 1
set proj($pname,$pnum) [create_project $pname $pnum]
# create ports
for {set i 1} {$i <= 5} {incr i} {
set port($i) [create_port $proj($pname,$pnum) $i]
}