【问题标题】:calling a proc from inside puts TCL command and put it in file从内部调用 proc 将 TCL 命令放入文件中
【发布时间】:2015-05-16 02:17:57
【问题描述】:

我正在尝试从 puts 语句中调用 proc 并使用 TCL 将其放入文件中,如下所示

set fp_jason [open jason.txt w]
proc MY_FUNCTION { } {
puts "Experiment success"
}
puts $fp_jason " [MY_FUNCTION] "

上述脚本在 jason.txt 中的输出什么都没有

Experiment Success 打印在 shell 中

我希望 jason.txt 包含的所需输出是

$cat jason.txt
Experiment success

可以帮助我在 jason.txt 中获得所需的输出

提前致谢。

【问题讨论】:

    标签: tcl


    【解决方案1】:

    当您puts 未指定频道时,您将putsstdout。如果你想把一个字符串放到一个文件中,你通常会这样做:

    puts $fp_jason "Experiment success"
    

    因此,如果您将Experiment success 替换为函数,则该函数必须将return 字符串Experiment success,因此自动变为:

    set fp_jason [open jason.txt w]
    
    proc MY_FUNCTION { } {
        return "Experiment success"
    }
    puts $fp_jason "[MY_FUNCTION]"
    

    我删除了函数前后的空格,因为它看起来不像你需要它们。此外,如果您没有在文件中添加比函数结果更多的内容(或任何可能被解释器解释为附加参数的内容),您可以安全地使用:

    puts $fp_jason [MY_FUNCTION]
    

    如果您这样做,请使用引号,因为您在字符串中使用空格:

    proc MY_FUNCTION { } {
        return "4"
    }
    puts $fp_jason "A table has [MY_FUNCTION] legs"
    

    这是错误的,因为每个单词都会被解释为命令puts的参数:

    proc MY_FUNCTION { } {
        return "4"
    }
    puts $fp_jason A table has [MY_FUNCTION] legs
    

    【讨论】:

      【解决方案2】:

      您必须通过使用方括号来应用命令替换。

      puts [MY_FUNCTION]
      

      【讨论】:

      • 您好,感谢您的快速回答,但我已经修改了我的问题,您可以看看上面的问题吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多