2015-07-03 139 views
1

我在腳本中使用lappend元素,做這樣的事情:lappend增加了大括號

set element_name a[0] 
lappend mylist $element_name 

我看到,如果$element_name包含它[]用於例如a[0]lappend增加了花括號。如果我打印$mylist那麼它給出:

{a[0]} 

我該如何擺脫那些大括號?我只想要a[0]

+0

即第一行應生成一個錯誤,'無效命令名0',除非你寫爲'{A [0]}'或'「一個\ [0 \ ]'' – slebetman

+0

@slebetman:'a \ [0]'沒有雙引號就足夠了。 –

+0

或者你有一個命令:'proc 0 {} {return {[0]}}' –

回答

1

大括號消失,如果你使用join到列表轉換爲字符串:

puts [join $mylist] 
# => a[0] 

,或者如果你單獨打印的元素:

foreach elem $mylist {puts $elem} 

列表的字符串表示需要報價包含對解釋器有重要意義的字符和/或干擾列表結構的元素。括號(在它們之間有一個腳本)通常被解釋爲一個命令替換,並且爲了防止解釋器評估它,你的元素被包裹在大括號中。一旦列表元素被轉換爲字符串,這就不再是一個問題,並且您存儲在其中的文本不再被包裝。

文檔:foreachjoinputs