0

全部,我想要做什么:Proc A 调用 Proc B,使用 B 的上级命令我试图在 proc A 范围内设置变量。当值有空格时会发生错误。

proc B { } {
    set string1 "Test"
    set string2 "Test with space"
    uplevel 1 set key1 $string1
    uplevel 1 set key2 $string2
    return 0
}

proc A { } {
    set res [B]
    puts "key1 is $key1"
    puts "key2 is $key2"
}

如果我注释掉key2,它工作正常。添加 key2 时,失败并出现以下错误。

wrong # args: should be "set varName ?newValue?"
    while executing
"set key2 Test with space"

有关如何克服此错误的任何建议。感谢你的帮助。

4

1 回答 1

5

uplevel 1 set key2 $string2变成set key1 test with space,这就是为什么你得到你的错误。

最佳实践是使用以下命令构建您要运行的命令[list]

uplevel 1 [list set key2 $string2]

这将保证一个格式良好的set陈述。

于 2014-05-02T18:03:08.860 回答