Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
tcl for linux server中变量名和字段说明符数量不同错误_Linux_Tcl - Fatal编程技术网

tcl for linux server中变量名和字段说明符数量不同错误

tcl for linux server中变量名和字段说明符数量不同错误,linux,tcl,Linux,Tcl,在这里,我在linux服务器的tcl脚本中使用了set numCut[scan$inline1“%d”],但在执行脚本后,它会显示以下错误 `different numbers of variable names and field specifiers` variable $inline1 value is `2) "NYMEX UTBAPI Worker" (NYMEX UTBAPI Poller): STOPPED` 我在谷歌上搜索了这个,然后我在下面找到了 ` 0x1771b0

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

`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.
`

有人能帮我解决这个问题吗?
提前感谢…

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

因此,只有一个格式说明符,没有变量,这就是Tcl解释器告诉您的


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

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

因此,只有一个格式说明符,没有变量,这就是Tcl解释器告诉您的


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

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

更改:

set numCut [scan $inline1 "%d"]
致:


如果可以的话,也可以切换到更新版本的Tcl,因为8.4已经快过其延长的支持期了。(今年夏天将有一个最终的补丁发布,以解决最近系统的一些构建问题,但仅此而已。之后我们将不支持它。)

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

更改:

set numCut [scan $inline1 "%d"]
致:


如果可以的话,也可以切换到更新版本的Tcl,因为8.4已经快过其延长的支持期了。(今年夏天将有一个最终的补丁发布,以解决最近系统的构建问题,但仅此而已。之后我们将不支持它。)

因此,正如我应该指出的,服务器的
tclsh
实际上是8.4。您可能可以使用
tclsh8.5
来获得更新的版本,或者您可能需要安装(或已经安装)更新的版本。我在Linux机器上使用
tcl-8.5.7-6.el6.i686
。当我使用like
scan$inline1“%d”numCut
时,它会说error as
无法读取“numCut”:没有这样的变量,因为这里我们没有使用
set
来设置变量。如果我不正确,请更正。对于
set numCut[string range$line 0 1]
它没有为输入打印任何内容
2)“NYMEX UTBAPI Worker”(NYMEX UTBAPI Poller):在放入
set numCut[string range$line 1 5]后停止
它正在打印
[0m2)
。你能告诉我这里有什么问题吗。我在foreach循环中使用了这个。foreach循环有什么问题吗?很抱歉让你们陷入麻烦。但我得到了解决方案。实际上,第一个字母索引是4。现在我得到的是
set numCut[字符串范围$4行]
因此,正如我应该指出的那样,服务器的
tclsh
实际上是8.4。您可以使用
tclsh8.5
来获得更新的版本,或者您可能需要安装(或已经安装)一个较新的版本。我在我的Linux机器上使用
tcl-8.5.7-6.el6.i686
。当我使用like
scan$inline1“%d”numCut
时,它会说错误,因为
无法读取“numCut”:没有这样的变量
,因为这里我们没有使用
set
来设置变量。如果我不正确,请更正。for
set numCut[string range$line 0 1]
它没有为输入打印任何内容
2)“NYMEX UTBAPI Worker”(NYMEX UTBAPI Poller):在放置
set numCut[string range$line 1 5]
后停止打印
[0m2)
。你能告诉我这里有什么问题吗。我在foreach循环中使用了这个。foreach循环有什么问题吗?很抱歉让你们陷入麻烦。但我得到了解决方案。实际上,第一个字母索引是4。现在我得到的是
set numCut[字符串范围$4行]