【问题标题】:Why does exec command is not working on TCL?为什么 exec 命令在 TCL 上不起作用?
【发布时间】:2021-03-21 18:35:33
【问题描述】:

我是 TCL 的新手。我用以下代码制作了一个脚本:

if {[file exists /proc/cpuinfo]} {
  exec grep "model name" /proc/cpuinfo
  exec grep "cpu MHz"    /proc/cpuinfo
}

puts "Hostname : [info hostname]"

由于某种原因,exec 命令没有被执行。即使我取出括号,该命令也不起作用。 此外,如果我在 tclsh 中逐条执行命令,它可以正常工作。

tclsh
%exec grep "model name" /proc/cpuinfo
model name :Intel(R) Xeon(R) CPU    @2.53GHz
%exec grep "cpu MHz" /proc/cpuinfo
cpu MHz    :2533.423

【问题讨论】:

  • 你没有对exec 返回的东西做任何事情......

标签: linux tcl


【解决方案1】:

我将稍微扩展一下 Shawn 正确写的内容,因为这种行为对于 tclsh 的新手(比如我)来说是非常出乎意料的,尽管 exec manual page 中的这些话解释了这一点:

如果标准输出没有被重定向,那么 exec command 返回上一条命令的标准输出……

它特别指出 returns,这并不意味着它被打印出来,而是如果我们不对输出做任何事情,它就会被丢弃,比如像你做的那样将它传递给 puts [info hostname]:

  puts [exec grep "model name" /proc/cpuinfo]
  puts [exec grep "cpu MHz"    /proc/cpuinfo]

我们在交互模式下没有puts,因为那里的命令结果会自动打印出来。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多