我将变量 myref 设置为:
sendEvents()
将 $ expect_out(缓冲区)加入 myval 的最快方法是什么?
set myref {$expect_out(buffer)}
答案 0 :(得分:2)
如果您的字符串只包含变量的名称,那么最好只使用set
只有一个参数:
set myref {expect_out(buffer)}
puts "The value is [set $myref]"
但是,如果你有$
以及,那么正确的做法是使用subst
(这意味着“假装这是双引号中的东西” ):
set myref {$expect_out(buffer)}
puts "The value is [subst $myref]"
选择合适的产品。
答案 1 :(得分:1)
我认为这会解决问题
set myval [subst $$myref]
$ myref首先被替换,然后我们用第二个$
替换该值以上是我认为你想要的一个例子:
set a 12
12
set b a
a
set c [subst $$b]
12
答案 2 :(得分:1)
您无法使用$$
加倍取消引用。但是,您可以使用set命令只使用一个参数来读取变量中的值。所以:
set myval [set $myref]
set
语句的评估首先扩展$myref
以获取$expect_out(buffer)
字符串,然后这是set
命令本身的参数并被评估为返回该变量名称的值。
% set a(test) hello
hello
% set name "a(test)"
a(test)
% set b [set $name]
hello