在tcl中执行程序并重定向

在tcl中执行程序并重定向,tcl,Tcl,在一个tcl程序中,我试图执行一个程序,该程序使用进行输入。我找到了答案,命令必须写成 puts [exec "./program" < inputfile] 我找到了答案,命令必须写为 puts [exec "./program" < inputfile] Tcl可以自行处理重定向,因此您可以编写: puts [exec ./program <inputfile] 否则,它试图将整个事件解释为一个有点奇怪的文件名;在Unix上是合法的,在Windows上不是,但不是您想

在一个tcl程序中,我试图执行一个程序,该程序使用进行输入。我找到了答案,命令必须写成

puts [exec "./program" < inputfile]

我找到了答案,命令必须写为

puts [exec "./program" < inputfile]

Tcl可以自行处理重定向,因此您可以编写:

puts [exec ./program <inputfile]
否则,它试图将整个事件解释为一个有点奇怪的文件名;在Unix上是合法的,在Windows上不是,但不是您想要的

或者,您可以通过系统外壳启动整个系统:

puts [exec /bin/sh -c "./program < inputfile"]
这是可行的,但有很多警告。特别是,为shell引用内容是一个非常重要的问题,而且您无法移植到Windows,因为在Windows中,通过命令行处理器运行内容的咒语有点不同。您还使用了一个额外的过程,但在实践中这并不是一个大问题,除非您真的在扩展系统资源的限制


好的一面是,您可以在其中使用完整的shell语法,这可以做一些非常尴尬的事情。它也更广为人知,所以我会向具有中等专业水平的用户展示这一点。新用户应该坚持罐装食品;真正的专家可以编写一些Tcl脚本。

Tcl可以自行处理重定向,因此您可以编写:

puts [exec ./program <inputfile]
否则,它试图将整个事件解释为一个有点奇怪的文件名;在Unix上是合法的,在Windows上不是,但不是您想要的

或者,您可以通过系统外壳启动整个系统:

puts [exec /bin/sh -c "./program < inputfile"]
这是可行的,但有很多警告。特别是,为shell引用内容是一个非常重要的问题,而且您无法移植到Windows,因为在Windows中,通过命令行处理器运行内容的咒语有点不同。您还使用了一个额外的过程,但在实践中这并不是一个大问题,除非您真的在扩展系统资源的限制


好的一面是,您可以在其中使用完整的shell语法,这可以做一些非常尴尬的事情。它也更广为人知,所以我会向具有中等专业水平的用户展示这一点。新用户应该坚持罐装食品;真正的专家可以编写一些Tcl脚本。

这是对Chhama的自我回答的扩展,这是对Chhama的自我回答的扩展,这是完全正确的。