2017-02-25 16 views
1

我正在創建一個數組並循環遍歷數組,但由於某種原因,foreach命令正在向索引添加引號。TCL foreach正在向我的索引添加引號

我有以下代碼初始化數組:

# Fill the region array for the 8 regions. 
set regionBBox(SDQ1) "11262.000 1558.700 15489.000 1663.000" 
set regionBBox(SDQ2) "6910.000 1558.700 11137.000 1663.000" 
set regionBBox(SDQ3) "1550.000 7929.260 1665.000 12159.000" 
set regionBBox(SDQ4) "1550.000 12283.820 1665.000 16511.000" 
set regionBBox(SDQ5) "6654.000 21241.580 11393.000 21352.000" 
set regionBBox(SDQ6) "11518.000 21241.580 16257.000 21352.000" 
set regionBBox(SDQ7) "21246.000 11773.100 21354.005 15999.000" 
set regionBBox(SDQ8) "21246.000 7418.540 21354.000 11647.000" 

時,我得到了整個名單無報價顯示:

lsort [array names regionBBox] 

結果:

SDQ1 SDQ2 SDQ3 SDQ4 SDQ5 SDQ6 SDQ7 SDQ8 

但是,當我通過數組遍歷每個$ id的值包含雙引號。

foreach $id [lsort [array names regionBBox]] { 
    echo "Index = $id" 
    set bbox $regionBBox($id) 
} 

結果:

Index = "SDQ6" 
Error: can't read "regionBBox("SDQ6")": no such element in array 

那麼,爲什麼的foreach加上引號?我如何避免添加引號?

+0

衛生署!愚蠢的菜鳥錯誤。我有$ id,我應該只有id。 – LivingDust

+0

請注意'echo'是一個shell命令。它將在交互式tclsh會話中按照您的預期工作,但不會在tcl腳本中運行。 –

回答

2

這是一個愚蠢的新手錯誤:我有一個「$ id」的foreach,我應該只有「id」。這裏是固定的代碼:

foreach id [lsort [array names regionBBox]] { 
    echo "Index = $id" 
    set bbox $regionBBox($id) 
} 

導致:

Index = SDQ1 
Index = SDQ2 
Index = SDQ3 
Index = SDQ4 
Index = SDQ5 
Index = SDQ6 
Index = SDQ7 
Index = SDQ8