首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TCL获取连接变量的值

TCL获取连接变量的值
EN

Stack Overflow用户
提问于 2013-01-11 04:53:16
回答 2查看 445关注 0票数 0

x是设备名称( device -1、device-2、device-3)的列表。通过连接字符串device1为每个端口创建一个变量,这样您就可以得到$device-1port

在x上循环创建

代码语言:javascript
复制
[expr $${x}port-2000 ]   #x is device-1 so it is trying $device-1port-2000 which throws error.

我想把$device-1port的数值放入一个不带破折号的变量中。

代码语言:javascript
复制
set xvar $${x}port

[expr $xvar-2000 ]

或者,我是否可以将$${x}port包装在expr语句中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-11 04:57:53

要读取名称中包含插值的变量,请使用单参数set

代码语言:javascript
复制
set withoutadash [set device-${x}port]

一般来说,最好使用数组来处理这类事情。

票数 3
EN

Stack Overflow用户

发布于 2013-01-11 07:11:13

处理这种复杂变量的最好方法之一是使用upvar命令为变量创建一个本地的“好用”别名。特别是,upvar 0为本地变量创建了一个本地别名;虽然有点棘手,但这是一种众所周知的技术。

代码语言:javascript
复制
upvar 0 ${x}port current_port

现在,我们对current_port的任何读、写或取消设置都等同于对具有笨拙名称的端口的读/写/取消设置,您可以简单地编写代码:

代码语言:javascript
复制
puts [expr { $current_port - 2000 }]
set current_port 12345
# etc.

别名将在当前过程结束时忘记。

当然,您可能应该考虑使用数组。它们更简单,您不需要费力地使用计算变量名:

代码语言:javascript
复制
set x 1
set device($x,port) 12345
puts [expr {$device($x,port) - 2000}]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14267079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档