如果我只把它放在下面就行了。
"{[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] }"
}
问题是您编写的是($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}]]