• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:cshからperlを呼び出しファイルに出力)

cshからperlを呼び出しファイルに出力

このQ&Aのポイント
  • cshからperlを呼び出し、perlが出力する内容と入力項目をcsh内部で実行し、結果をファイルに出力する方法について教えてください。
  • cshファイル内で、perl a.pl を実行し、その結果をファイルに出力することは可能でしょうか?具体的には、cshから呼び出されたperlの内容をファイルに出力したいです。
  • cshから実行されたperlの内容をファイルに出力する方法について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • hchonan
  • ベストアンサー率79% (19/24)
回答No.1

プログラムの出力やエラー表示、キーボードからの入力などといった端末に表示されたものすべてを記録したい場合にはscriptコマンドが便利です。 提示されたcshスクリプトから、teeの部分を取り除いた ---------- #!/bin/csh echo "●perl a.pl を実行します" perl a.pl ---------- という内容の job.csh を作成した場合、下記のようにjob.cshを実行する前にscriptコマンドを実行することにより、端末に表示された文字を記録することができます。 ---------- % script a.log script コマンド開始。ファイルは a.log です。 $ csh ./job.csh ●perl a.pl を実行します ... ... $ exit script コマンド終了。ファイルは a.log です。 ---------- しかしながら、scriptコマンド自体もシェルスクリプトの中で実行させようとした場合、Solarisのscriptコマンドが実行するコマンドを指定できない仕様となっているため工夫が必要で、先のjob.cshを ---------- #! /bin/csh if ( "$SHELL" != "$0" ) then     setenv SHELL $0     exec script a.log else     echo "●perl a.pl を実行します"     perl a.pl     ....     .... endif ---------- とトリッキーな書き方をするか、もしくは参考URLのラッパスクリプトを利用する必要があります。( FreeBSD 4.x や util-linux 2.12 以降の script コマンドでは -c オプションが使えるのでこの工夫は必要ありません ) また、記録されたファイルには制御文字も記録されるので、 ---------- % cat a.log | col -b > b.log ---------- として制御文字を取り除く必要もあるかと思います。 script , col の両コマンドや参考URLのスクリプトを参考に工夫してみてください。

参考URL:
http://www.kmc.gr.jp/~tak/sources/sh/
basket11
質問者

お礼

早速のご回答ありがとうございます。 script に関して試してみたいと思います。 全てかa.logへ出力できそうな感じがしています。 実際に試す事が出来るのが2~3日後になってしまいますので、結果はそれから連絡差し上げます。 簡単ですが、お礼とさせていただきます。

basket11
質問者

補足

お礼が大変遅くなりまして申し訳ございません。 hchonan様よりご教授いただいた内容で万事上手くいきました。 大変勉強になりました。 本当にありがとうございます。

関連するQ&A