2016-03-05 57 views
0

是否有可能將一個函數生成的日誌獲取到變量中,而無需從TCL中的該函數返回該值,就像以前在BASH中使用"$"那樣。在TCL中獲取控制檯變量的日誌

function f1 { 
    echo "ABC" 
    return 0 
} 

調用程序,

var=$(f1) ;# gives output ABC 

我知道如何解決這個問題,

proc f1 {} { 
    return "ABC | 0" 
} 

在調用的時候,我需要同時抽取價值一樣,

set console_msg [lindex [split [f1] "|"] 0] 
set retval [lindex [split [f1] "|"] 1] 

有沒有prope在TCL中做到這一點?

感謝,

回答

1

這似乎是顯而易見的,以你在事後:

set value [f1] 

,並分配給變量:

lassign [split $value |] msg val 
+0

讓我正確地改寫它。 '$'在bash中做了些什麼。在TCL中可以拿到ABC價值而不退縮? –

+0

然後,沒有。如果你想從一個proc返回2個東西,返回一個2個元素的列表。 'proc f1 {} {set x「message」;設置42;返回[列表$ x $ y]}'然後'lassign [f1] msg retval' –

+0

得到了另一種方式如何使用'lassign'返回多個值,以及我正在使用'split'做什麼。但TCL中仍然沒有BASH'$'替換。因爲我們沒有在BASH中返回ABC,但仍然可以使用'$'.. PS:我沒有比較兩種語言。但這就是我的需求 –