【问题标题】:Tcl set commandTcl 设置命令
【发布时间】:2012-09-27 22:33:28
【问题描述】:

快速提问...我正在尝试以下方法:

set changedir "cd $JSDIR/"

eval $changedir

..$JSDIR 已经定义了。运行此脚本会出现错误:“设置:变量名称必须以字母开头。”

解决方法是什么?

谢谢。

【问题讨论】:

  • 等等...我可以直接执行 'cd $JSDIR',即我不需要 eval。我需要在 Tcl 中进行 eval 吗?
  • 你需要评估吗?非常非常罕见。例如,您可以持续数年而不需要使用 eval。有一天,您可能会尝试一些高级的东西,并发现 eval s ne rigjt 工具,您会很高兴它在那里。既然你刚刚在学习 Tcl,就假装它不存在吧。

标签: command set tcl


【解决方案1】:

这不是 Tcl 生成的错误消息,因为 Tcl 的变量绝对需要以字母开头。好的,将它们保留为字母数字往往更方便,因为$var 速记语法比变量名的一般空间更具限制性,但set var 形式几乎可以处理任何事情。

我猜脚本正在由不是 Tcl 的东西评估,也许是 bash?

【讨论】:

  • “几乎任何东西”,我的意思是只需要注意命名空间分隔符 (foo::bar) 和数组引用 (foo(bar))。我还建议避免使用您无法输入的任何内容;虽然 Tcl 可以很好地使用它,但你会发现它很烦人!
  • 我在 linux 中调用,"source " 我认为它解释为 Tcl
  • @youngMoney: 不,提示中的source 将代码视为 bash 脚本。
  • @YoungMoney wiki.tcl.tk/812 tclsh 或希望在某个时候参与进来
【解决方案2】:

尝试改为设置 changedir cd ${JSDIR/}

【讨论】:

    【解决方案3】:

    实际上变量名完全正确时会出现此消息,真正的问题是需要引用变量值。尝试代替:set changedir "cd $JSDIR//"

    【讨论】:

    • 不,那个错误不会出现,因为Tcl对变量名没有这样的限制。不管你怎么引用它,你都不会得到那个错误。
    猜你喜欢
    • 2018-03-31
    • 1970-01-01
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多