【发布时间】:2010-11-14 14:02:58
【问题描述】:
我正在使用 VMD(一个分子动力学可视化包),我想从 Perl 脚本打开 VMD,运行 Tcl 脚本,将输出打印到日志文件,然后关闭 VMD 并返回到 Perl 脚本。执行此操作的普通语法是:
system("vmd -dispdev text -eofexit < program.tcl > LOG");
据我所知,分解如下:
-
system("");:执行包含在引号中的 Bourne Shell 命令 -
vmd: 调用 VMD -
-dispdev text:以文本模式打开 VMD -
-eofexit:当到达 STDIN 上的 EOF 时终止 VMD -
< prog.tcl:将prog.tcl设置为标准输入; vmd 将在prog.tcl完成时终止 -
> LOG:将 STOUT 写入文件<LOG>
现在这将完美地工作,除了我的 Tcl 脚本需要参数。我喜欢做的是这样的:
system("vmd -dispdev text -eofexit < program.tcl string1 string2 > LOG");
但是,在这种情况下,shell 会尝试将 string1 和 string2 作为文件读取。由于我对重定向的了解有限,我不确定究竟第一行发生了什么,第二行到底出了什么问题,或者什么是好的解决方案。任何帮助将不胜感激。
【问题讨论】:
标签: shell redirect tcl arguments