
いつもお世話になっております。
cshからperlを呼び出しperlが出力する内容と入力項目を実行しているcsh内部で行ない結果をファイルへ出力したいのですが、そのような事ができるのでしょうか?
----------
cshファイル内
#!/bin/csh
echo "●perl a.pl を実行します" | tee a.log
perl a.pl
----------
perlファイル内
(perlがわかりませんので、perlの内容をcsh形式で記述させていただきます)
(1)echo -n "日付を入力して下さい"
(2)echo "⇒ "
(3)set INPUT_DATE = $<
(4)echo "日付:$INPUT_DATE "
exit 0
----------
cshから実行されたperl(csh)の内容[(1)(2)(3)(4)]をファイル(| tee a.log)へ出力することが可能でしょうか?
ご存知の方がいらっしゃいましたらご教授願います。
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/
この回答への補足
お礼が大変遅くなりまして申し訳ございません。
hchonan様よりご教授いただいた内容で万事上手くいきました。
大変勉強になりました。
本当にありがとうございます。
早速のご回答ありがとうございます。
script に関して試してみたいと思います。
全てかa.logへ出力できそうな感じがしています。
実際に試す事が出来るのが2~3日後になってしまいますので、結果はそれから連絡差し上げます。
簡単ですが、お礼とさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) awkのtoupper() 1 2022/10/21 20:39
- Perl Windows10においての『Perl』のプログラムについて 1 2022/05/09 16:04
- Perl Perlでファイルの末尾から指定文字列を検索してファイルに吐き出したい 4 2022/04/04 16:15
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
- JavaScript JAVASCRIPT 2 2022/04/15 15:10
- Perl Perlで特定文字列から特定文字列までを抜き出したい 4 2022/04/02 14:24
- Perl perlプログラミング 空白行削除 4 2023/01/28 17:58
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Perl Perlのエラーについてご教授ください。初心者です。 CGIを別サーバに移したところ、Perlのバー 5 2023/05/31 10:48
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LinuxでWine使うとどのくらいWi...
-
CentOSが起動時にフリーズ
-
Core 2 Duo の古いパソコンに最...
-
ubuntuのシャットダウンが進ま...
-
ubuntu(linux)のシャットダウン...
-
bashでシングルクォート内の変...
-
Windowsのローカルディレクトリ...
-
私のパソコンでVirtualBoxは使...
-
Ububtuでファイル共有できない...
-
Ubuntuで数字だけのユーザーア...
-
新しく買ったWin11のPCでLinux...
-
ubuntu 24 へのCanon 複合機ス...
-
lubuntuのインストールが終わり...
-
Fedoraのupgradeで、libruby.so...
-
2TBのUSBメモリを2000円ほどで...
-
初期のSurface Goにubuntuをデ...
-
Lubuntuでとにかく軽量のバージ...
-
ssl_request_logの必要性について
-
linuxサーバーのキャッシュをク...
-
プロジェクタに背景しか映らない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LinuxでWine使うとどのくらいWi...
-
Core 2 Duo の古いパソコンに最...
-
ubuntu(linux)のシャットダウン...
-
bashでシングルクォート内の変...
-
Linux のシェルスクリプトの強...
-
ubuntu が起動しない。
-
「/var/log」内のログの削除の...
-
ubuntuのシャットダウンが進ま...
-
ubuntuで デイスク/deb/loopと...
-
linuxサーバーのキャッシュをク...
-
ログにserver reached MaxReque...
-
tarで纏める際に、複数場外した...
-
ubuntu 24 へのCanon 複合機ス...
-
Ubuntu on Xorgのログインについて
-
LinuxのノートパソコンでDVDコ...
-
Windowsのローカルディレクトリ...
-
ホストオンリーアダプタで接続...
-
VirtualBox ゲストOSにPC内蔵HD...
-
ssh接続しようとしたらエラーメ...
-
Windows11のパソコンにAndroid...
おすすめ情報