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
STDIN として設定します。vmd はprog.tcl
完了 すると終了します> LOG
: STOUT をファイルに書き込みます<LOG>
私の Tcl スクリプトが引数を取ることを除いて、これは完全に機能します。私がやりたいことは次のようなものです:
system("vmd -dispdev text -eofexit < program.tcl string1 string2 > LOG");
ただし、この場合、シェルは string1 と string2 をファイルとして読み取ろうとします。リダイレクトについての私の理解が限られているため、最初の行で何が起こっているのか、2 番目の行で正確に何が間違っているのか、または適切な解決策が何であるかが正確にはわかりません。どんな助けでも大歓迎です。