如何从tcl脚本运行csh脚本?

时间:2012-11-12 09:46:40

标签: unix tcl csh

我正在尝试从tcl脚本运行csh脚本。

下面的tcl脚本调用csh脚本

#!/usr/bin/tclsh


set scripts_path /scratch/TCL_scripts/scripts_adders

set synthesis /scratch/TCL_scripts/synthesis.csh


set files [glob -directory $scripts_path *]
split $files
set files [lsort $files]
set i 1

foreach script $files {

     puts "hello"
     # puts [pwd]
     exec /bin/csh -c $synthesis
     puts $i

}

(开头)csh文件如下:

#!/bin/csh -f


echo abcdefgh

当我只从我的unix终端执行csh文件时,它工作正常。 当我调用我的Tcl脚本时,它运行并且确实写入“hello”并打印i,但csh文件未执行,因为“abcdefgh”从未出现在终端中。我也尝试过其他命令,而且我总是遇到同样的问题:当我从Tcl脚本运行它时,csh脚本永远不会被执行,即使它直接从终端运行时运行正常。

(我的Tcl脚本和csh脚本都是可执行的)

为了从我的Tcl脚本运行我的csh脚本,我该怎么做?

非常感谢

1 个答案:

答案 0 :(得分:5)

csh脚本确实是为你运行的,但是默认情况下它的标准输出变成了Tcl exec命令的结果(如果它产生标准错误的任何内容,那么它将成为exec错误结果。要使输出和错误出现在终端上,您必须像这样修改exec

exec /bin/csh -c $synthesis >@stdout 2>@stderr

>@说“将标准输出重定向到以下频道”(在这种情况下为stdout),2>@对标准错误执行相同操作。