0

这里我set numCut [scan $inline1 "%d"]在 tcl 脚本中使用 linux 服务器,但是在执行脚本后它显示以下错误

`different numbers of variable names and field specifiers` variable $inline1
value is `2) "NYMEX UTBAPI Worker" (NYMEX UTBAPI Poller): STOPPED`

我在谷歌搜索了这个然后我得到了下面

`
    0x1771b07c tcl_s_cmdmz_diff_num_var_field

    Text: Different numbers of variable names and field specifiers

    Severity: tcl_c_general_error

    Component: tcl / tcl_s_general

    Explanation: The scan command detected that the number of variable names
    provided differs from the number of field specifiers provided.

    Action: Verify that the number of variable names is the same as the number of
    field specifiers.
`

在这里我得到了上面的描述

谁能帮我解决这个问题?提前致谢...

4

2 回答 2

2

在 Tcl 8.5 中添加了返回匹配字段的功能。在此之前,您必须为 中的每个字段提供一个变量,scan结果将是匹配的字段数(如果您提供变量名称,它仍然是)。

改变:

set numCut [scan $inline1 "%d"]

至:

scan $inline1 "%d" numCut

或者如果可以的话,切换到更新版本的 Tcl,因为 8.4 几乎超出了它的扩展支持期。(今年夏天将发布最终补丁,以解决最近系统上构建问题的一些小问题,但仅此而已。在那之后我们将不再支持它。)

于 2013-05-11T08:39:20.557 回答
1

我认为 Tcl 错误消息告诉您格式字符串中的说明符%d数量与 Tcl 命令中的变量数量不同scan $inline1 "%d"

所以,你有一个格式说明符,没有变量,这就是 Tcl 解释器告诉你的。

尝试将您的命令更改为scan $inline1 "%d" numCut,看看是否效果更好。

于 2013-05-10T17:53:44.063 回答