我是 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
答案 0 :(得分:2)
我将稍微扩展一下 Shawn 正确写的内容,因为这种行为对于 tclsh
的新手(如我)来说是非常出乎意料的,尽管 exec
manual page 中的这些词对此进行了解释:
如果标准输出没有被重定向,那么 exec 命令返回上一个命令的标准输出......
它特别说 returns,这并不意味着它被打印出来,而是如果我们不对输出做一些事情,比如像你一样将它传递给 puts
,它就会被丢弃用 [info hostname]
做的:
puts [exec grep "model name" /proc/cpuinfo]
puts [exec grep "cpu MHz" /proc/cpuinfo]
我们在交互模式下没有 puts
就可以离开,因为那里的命令结果是自动打印的。