在终端上打印脚本的结果(运行 在后台)
Printing the result of the script(running in background) on the terminal
我正在编写一个运行另一个 tcl 脚本的 perl 脚本。终端不打印任何内容并等待 tcl 脚本完成。
`chmod +x runme.tcl`; `./runme.tcl 2>&1`;
任何人都可以帮助我如何在终端上打印 tcl 脚本的结果而不是等待它完成吗?
谢谢
反引号捕获外部命令的输出。您可以在反引号前使用 print
命令编写该输出。
`chmod +x runme.tcl`; print `./runme.tcl 2>&1`;
您可以使用 Tcl
模块直接从 perl
运行 tcl
脚本,而无需使用 qx
或 system
:
#!/usr/bin/env perl
use warnings;
use strict;
use Tcl;
Tcl->new->EvalFile("runme.tcl");
它将与 perl 脚本共享相同的标准输出。
如果您使用的 Tcl
版本足够新,您可以轻松地创建一个 safe interpreter 来评估脚本,以防它试图做任何令人讨厌的事情:
#!/usr/bin/env perl
use warnings;
use strict;
use Tcl v1.05;
my $interp = Tcl->new;
my $safeinterp = $interp->CreateSlave("safeinterp", 1);
$interp->Eval('interp share {} stdout safeinterp');
$interp->Eval('interp share {} stderr safeinterp');
$safeinterp->EvalFile("runme.tcl");
system('chmod +x runme.tcl');
system('/runme.tcl 2>&1');
我正在编写一个运行另一个 tcl 脚本的 perl 脚本。终端不打印任何内容并等待 tcl 脚本完成。
`chmod +x runme.tcl`; `./runme.tcl 2>&1`;
任何人都可以帮助我如何在终端上打印 tcl 脚本的结果而不是等待它完成吗?
谢谢
反引号捕获外部命令的输出。您可以在反引号前使用 print
命令编写该输出。
`chmod +x runme.tcl`; print `./runme.tcl 2>&1`;
您可以使用 Tcl
模块直接从 perl
运行 tcl
脚本,而无需使用 qx
或 system
:
#!/usr/bin/env perl
use warnings;
use strict;
use Tcl;
Tcl->new->EvalFile("runme.tcl");
它将与 perl 脚本共享相同的标准输出。
如果您使用的 Tcl
版本足够新,您可以轻松地创建一个 safe interpreter 来评估脚本,以防它试图做任何令人讨厌的事情:
#!/usr/bin/env perl
use warnings;
use strict;
use Tcl v1.05;
my $interp = Tcl->new;
my $safeinterp = $interp->CreateSlave("safeinterp", 1);
$interp->Eval('interp share {} stdout safeinterp');
$interp->Eval('interp share {} stderr safeinterp');
$safeinterp->EvalFile("runme.tcl");
system('chmod +x runme.tcl');
system('/runme.tcl 2>&1');