2017-02-10 67 views
0

我只需创建一个名为$ Project的变量一次。在这个项目下需要创建一个仪器的多个端口。没有任何函数调用的代码如下所示:将一个函数输出传递给tcl中的其他函数

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

您可以轻松链接命令调用; [ ... ]语法是完全一般的。

set port [stc::create port -under [stc::create Project ...] ...] 

这是否是一个好主意,完全取决于您的程序在做什么。 (该规则适用于程序与任何其他命令,程序命令只是碰巧使用与本地堆栈帧运行的脚本来实现。)

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] 
} 
相关问题