-1

如果我只放在下面,它就可以工作。

"\{[lindex ($columns) 1] - 30.3]"

如果我如下所示,它不起作用。想知道为什么?

"\{[lindex ($columns) 1] - 30.3] [expr [lindex ($columns) 2] -30.3] \}"

我的脚本如下:

foreach line $lines {
    set columns [split $line " "]
    puts "\{[lindex ($columns) 1] - 30.3] [expr [lindex ($columns) 2] -30.3] \}"
}
4

1 回答 1

1

问题是您正在编写($columns)而不是$columns,它在您传递给的列表上连接括号lindex。在这种情况下,我怀疑该列表包含三个简单元素(例如1 2 3),并且连接的结果是(1 2 3)。索引 1 的中间元素仍然可以,但末尾的元素(索引 2)现在3)是非数字的。

整个事情是一个语法错误。以下是如何正确编写它:

puts "\{[expr {[lindex $columns 1] - 30.3}] [expr {[lindex $columns 2] -30.3}] \}"

但是,在这种情况下,这样写可能会更清楚一些:

lassign [split $line " "] c1 c2 c3
puts [format "{%f %f}" [expr {$c2 - 30.3}] [expr {$c3 - 30.3}]]
于 2021-04-23T07:57:56.460 回答