set ...
puts "HELLO_1"
puts [my_pkg::whoami]
puts "HELLO_2"
namespace eval :: my_pkg{
namespace export whoami
....
proc :: my_pkg::whoami{} {
set::my_pkg::RUN_1
.....
....
执行上述操作时,我收到此错误
“子进程异常退出”
如何解决这个问题,您能建议解决方法吗?
“whoami”不是 tcl 关键字,在 LINUX 中它返回帐户的用户 ID。 所以,基本上它告诉用户正在尝试访问该 pakcage“my_pkg”,但它不成功。
HELLO_1 出现 HELLO_2 没有出现在日志中
看来您的空格位置错误:
namespace eval :: my_pkg{
proc :: my_pkg::whoami{} { set::my_pkg::RUN_1 .....
Tcl 对空格非常敏感:它是面向单词的语言,所以你必须小心。
::
必须和名字一起拥抱{
通过
proc
调用,我们定义了一个名为 ::
的过程,它接受一个存储在名为 my_pkg::whoami{}
的变量中的参数——这将失败并出现错误,因为这不是 proc 参数的有效名称.
你需要
namespace eval ::my_pkg {
# ..............^^.....^
proc ::my_pkg::whoami {} { set::my_pkg::RUN_1 .....
# ....^^.............^
参见Tcl的12条规则。