TCL lindex从列表元素中删除引号

TCL lindex从列表元素中删除引号,tcl,Tcl,我有一个列表,其中一些元素是字符串,需要用引号括起来 如果我遍历列表并将每个元素放到终端,那么输出看起来是正确的。但是,如果我将lindex添加到包含在引号中的特定元素,引号将消失 示例代码: set myList [list "BUILD_PROJ \"I have quotes\""] foreach element $myList { puts [lindex $element 1] puts [lindex $element] } 产出: I have

我有一个列表,其中一些元素是字符串,需要用引号括起来

如果我遍历列表并将每个元素放到终端,那么输出看起来是正确的。但是,如果我将lindex添加到包含在引号中的特定元素,引号将消失

示例代码:

set myList [list "BUILD_PROJ \"I have quotes\""]

foreach element $myList {
    puts [lindex $element 1]    
    puts [lindex $element]    
}
产出:

I have quotes
BUILD_PROJ "I have quotes"

如何从列表中获取特定的lindexed元素以保留其引号?

我的错,与分隔符混淆了。我认为避开引号实际上是给了我一个包含单个元素的列表。更新至:

set myList [list "BUILD_PROJ" "\"I have quotes\""]

puts $myList
puts [lindex $myList 0]
puts [lindex $myList 1]
现在输出如我所预期:

BUILD_PROJ {"I have quotes"}
BUILD_PROJ
"I have quotes"

除非我遗漏了什么,否则它似乎保留了引号。我现在不在一个可以运行Tcl代码的环境中,但也许您想在输入中避免转义?通常情况下,我认为这将通过3个斜杠来完成。也许更整洁地创建列表iwth
set myList[list BUILD_PROJ{“I have quotes”}
——Tcl中的大括号只是一种类似于sh中单引号的引用机制。谢谢,是的,这看起来比我的带有转义引号的版本更整洁。