質問: $< (4)echo "日付:$input_date " exit 0 ---------- cshから実行されたperl(csh)の内容[(1)(2)(3)(4)]をファイル(| tee a.log)へ出力することが可能でしょうか? ご存知の方がいらっしゃいましたらご教授願います。
回答: プログラムの出力やエラー表示、キーボードからの入力などといった端末に表示されたものすべてを記録したい場合には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のスクリプトを参考に工夫してみてください。