【问题标题】:In Expect script, how do you perform simple math and assign the result to a variable?在 Expect 脚本中,您如何执行简单的数学运算并将结果分配给变量?
【发布时间】:2022-01-20 17:14:14
【问题描述】:

由于需要非常特殊的语法,学习这种语言一直很困难。一切都需要一组奇怪的大括号或括号或引号,我正在拔头发试图保持笔直。我可以找到我已经知道如何做的所有事情的示例,我什至可以找到我正在尝试做的部分示例,但显然这是一个如此简单和初学者的事情,没有人费心去演示它。要么这样,要么我变老了,我正在失去我的 Google-fu。

我有两个变量,thing1 和 thing2。我已经放弃了我的实际代码,直到我弄清楚如何做 2 + 2,所以现在 thing1 的值是 2,thing2 的值是 2。我试过了:

set thing_total expr thing1+thing2
set thing_total expr (thing1+thing2)
set thing_total expr [thing1+thing2]
set thing_total expr {thing1+thing2}
set thing_total expr [ thing1+thing2 ]
set thing_total expr [ thing1 + thing2 ]
set thing_total [expr $thing1+$thing2]
set thing_total [expr ($thing1+$thing2)]
set thing_total [expr {$thing1+$thing2}]
set thing_total [expr [ $thing1 + $thing2 ] ]

还有一些我不想列出来的。有人可以告诉我如何进行数学运算并将结果分配给变量吗?不要关心浮点数或整数或与数据类型有关的任何事情。

【问题讨论】:

  • 是的,这对 Tcl 语言来说有点小问题。你想要set thing_total [expr {$thing1+$thing2}]——这是Tcl 语法规则不可避免的结果。见tcl-lang.org/man/tcl8.6/TclCmd/expr.htm
  • 期望使用tcl 语言。如果您对 shell 脚本更熟悉,请尝试我的 sexpect。

标签: expect script


【解决方案1】:

谢谢你,格伦,让我走上正轨。为了让它工作,我不得不添加空格:

set thing_total [ expr { $thing1 - $thing2 } ]

尝试运行不带空格的代码给了我同样的错误:

invalid command name "expr{2+2}"
    while executing
"expr{$thing1+$thing2}"
    invoked from within
"set thing_total [expr{$thing1+$thing2}]"
    (file "./adder.sh" line 11)

不确定变量和括号之间还是变量和操作数之间是否需要插入空格,所以我只是在所有地方都添加了空格。

【讨论】:

    猜你喜欢
    • 2013-08-24
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    相关资源
    最近更新 更多