- PR -

cshに関して

1
投稿者投稿内容
きゃと
会議室デビュー日: 2008/08/05
投稿数: 1
投稿日時: 2008-08-05 22:33
こんばんは、はじめまして、きゃとと申します。

多分、カテゴリ的には何処に該当がするか、不明だったので、こちらに記載させて頂きました。

cshにてシェルを作成しています。
今回の質問内容ですが、現状下記のような形で、変数(LOG_TIME)の中に、
yyyymmdd HHMMSSと言う形で、その実行時間を入れております。
この変数を、"echo"に表示をさせ、他の文章とセットで、
リダイレクトを行いログファイルに記載してます。
このあとに、何かしらの処理を実施してます。この間約5分程度。
処理が完了後再度、変数(LOG_TIME)を、"echo"に表示をさせ、他の文章とセットで、
リダイレクトを行いログファイルに記載してます。
この際。Aと、Bのタイムスタンプが同じになってしまいます。
これを回避する良い手段はありませんでしょうか?
C&Dのようにすれば、異なることは分かりますが、
極力変数などを使用し。見た目的に綺麗にしたいです。
説明が下手で申し訳ございません。
以上。よろしくお願いします

set LOG_FAIL = /var/log/TEST.log
set LOG_TIME = "`date +%y%m%d` `date +%H%M%S`"

echo $LOG_TIME 処理を開始しました。 >> $LOG_FILE  ・・・・・A
=======================================================
何かしらの処理を実施 5分程度かかる処理
=======================================================
echo $LOG_TIME 処理を終了しました。 >> $LOG_FILE  ・・・・・B


□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

set LOG_FAIL = /var/log/TEST.log

echo "`date +%y%m%d` `date +%H%M%S`" 処理を開始しました。 >> $LOG_FILE  ・・・・・C
=======================================================
何かしらの処理を実施 5分程度かかる処理
=======================================================
echo "`date +%y%m%d` `date +%H%M%S`" 処理を終了しました。 >> $LOG_FILE  ・・・・・D


スフレ
ぬし
会議室デビュー日: 2005/05/27
投稿数: 281
お住まい・勤務地: 東京
投稿日時: 2008-08-05 23:09
shやbashだったら関数にすれば良いのですけど、cshには関数がないんですよね。共通の部分を別のスクリプトにして呼び出せば良いのではないでしょうか。
水都
大ベテラン
会議室デビュー日: 2004/07/22
投稿数: 111
投稿日時: 2008-08-06 09:19
タイムスタンプとはファイルのタイムスタンプではなく、ログファイルの中に
記された実行時間で良いのですよね?

set LOG_TIMEで代入した値(実行時間)を呼び出しているだけですから、
それは同じになるのが正しいのではないですか
Bの直前にもう一度set LOG_TIMEするとかしないと、その時点での時間は取れないと思います
末記人
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 233
お住まい・勤務地: あわにこ
投稿日時: 2008-08-06 10:16
こんにちは

こんなんじゃだめですか?
LOG_TIMEにはコマンド文字列を入れて、出力時にバックティックで実行!

コード:
#!/bin/csh

set LOG_FILE = "TEST.log"
#set LOG_TIME = "`date +%y%m%d` `date +%H%M%S`"
set LOG_TIME='date +"%y%m%d %H%M%S"'

echo "`$LOG_TIME` 処理を開始しました。" >> $LOG_FILE #  ・・・・・A
#=======================================================
#何かしらの処理を実施 5分程度かかる処理
sleep 3
#=======================================================
echo "`$LOG_TIME` 処理を終了しました。" >> $LOG_FILE #  ・・・・・B

angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2008-08-09 13:40
もはや解決案は出ているので脱線ですが…。

1. なぜあえてシェルスクリプトを cshベースで作るのでしょうか…
 ( cshって処理の制御がかなりダメダメなのですが… )

2. コマンド置換で $(コマンド) ではなく未だに `コマンド` を使うのはなぜでしょうか…
 ( …ひょっとして csh って $() が使えない? …それにしても sh系のスクリプトですら $() って浸透していないような… )

3. なぜ「シェルスクリプト」の略語は「シェル」なのでしょうか…
 ( まだ「シェルを書く」は、「Cを書く」「Perlを書く」と同じ流れかと理解できるのですが… )
 ( いっそのこと「バッチ(ファイル)」と言ってもらった方が清々しい… )

質問者がどうこう、ではなく、身の回りで常態として見られる傾向として書いています…
1

スキルアップ/キャリアアップ(JOB@IT)