我正在使用VMD(分子動力學可視化包),我想從Perl腳本中打開VMD,運行Tcl腳本,將輸出結果打印到日誌文件中,然後關閉VMD並返回到Perl腳本。普通語法要做到這一點:從Bourne Shell執行TCL腳本的問題(重定向問題)
system("vmd -dispdev text -eofexit <program.tcl> LOG");
其分解如下,作爲最好的,我的理解:
system("");
:執行Bourne shell命令包含在報價vmd
:調用VMD-dispdev text
:以文本模式打開VMD-eofexit
:在達到STDIN上的EOF時終止VMD< prog.tcl
:將prog.tcl
設置爲STDIN;當prog.tcl
完成> LOG
VMD將終止:寫粗壯提交<LOG>
現在,這將很好地工作,但我的Tcl腳本來接受參數。我今天準備喜歡做的是一樣的東西:
system("vmd -dispdev text -eofexit < program.tcl string1 string2 > LOG");
然而,在這種情況下,外殼試圖讀取字符串1和字符串的文件。由於我對重定向的理解有限,我不確定究竟是第一行發生了什麼,第二行發生了什麼錯誤,或者什麼是好的解決方案。任何幫助,將不勝感激。
完美,我不知道`源`。我有VMD命令在一個循環內部運行,我認爲每次都必須重寫整個Tcl腳本;這樣好多了。太糟糕了,沒有辦法直接傳遞參數。 – daltonb 2009-07-28 14:04:01