2017-02-10 21 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] 
} 
相關問題