アプリ版:「スタンプのみでお礼する」機能のリリースについて

sun fire + Solaris9でシェルを作成しました。
目的は、1ヶ月前のログを削除する です。
で、こんなシェルを作成しました。
#!/bin/sh
# logmove.sh

DAY=`date +%d`
RMDAY=`env TZ=JST+735 date +%Y%m%d`
# 24H*31Day-9H=735
RMFILE=log_${RMDAY}.*
(以下省略)

しかし、この結果、$RMDAYには今日の日付しか返ってきません。これを
RMDAY=`env TZ=JST+159 date +%Y%m%d`
# 24H*7Day-9H=159
とすると、ちゃんと1週間前の日付が返ってきます。

dateの仕様なのか、シェルの仕様なのか良くわかりません。解決策はないでしょうか。

A 回答 (6件)

該当する文書を間違えていました。

以下の文書です。

Solaris 9 9/04 Reference Manual Collection - Japanese >> SunOS リファレンスマニュアル 5 : 標準、環境、マクロ >> SunOS リファレンスマニュアル 5 : 標準、環境、マクロ >> environ(5) – ユーザー環境

 これによると、offsetできるのは0~24と取れるのですが...。

参考URL:http://docs.sun.com/app/docs/doc/816-3993/6ma82v …
    • good
    • 0

TZ変数を変えてまで無理矢理やるよりもふつうは


GNUdate コマンドを/usr/local/bin などにコンパイル
してやったほうがいいと思います。
    • good
    • 0
この回答へのお礼

みなさま、ご回答ありがとうございました。

こちらでの調査結果を報告させていただきます。
本来SolarisではTZのoffsetとして0-24以外を指定した
場合は予測不可としており(man参照)、★たまたま★
計算できていたということです。この仕様は、
patch ID#112874-20「 SunOS 5.9: lgroup API libc Patch 」にて修正されており上記制限(offsetは0-24)
以外は保証されない となりました。

以上、報告させていただきます。
報告が遅くなりましたことをお詫びいたします。

#なんでぃ、結局bugかい! < 独り言

お礼日時:2005/03/26 18:36

>TZ環境変数で使えるのは+-167というのはどこかに明記されているのでしょうか。



 残念ながら、私は見つけることができませんでした。該当する文書としては、Solaris 9 のシステム管理(基本編)(817-4909)とかSolaris 9 のシステム管理(上級編)(816-3964)あたりと思いますが、いずれもここまでの説明はありませんでした。

 数値は検証結果です。シェルを書いて-1000~1000くらいまでやってみたらいいですよ。
    • good
    • 0

dateコマンドはどうしても現在の時刻の表示と設定が目的なのでどうしても限界がありますね。



この場合はシェルスクリプトということですが、perlの力を借りて
========================================================================
#! /bin/sh
# logmove.sh

PERL=/usr/bin/perl

# 60sec * 60min * 24hour * 31 day
OFFSET=`echo '-60*60*24*31' | /bin/bc`

RMDAY=`${PERL} -MPOSIX -e "print strftime \"%Y%m%d\", localtime(time+(${OFFSET}))"`

echo ${RMDAY}
========================================================================

というのはどうでしょうか。

もしくはいっそのことperlでこの手の運用スクリプトを書くというのも検討する価値があると思います。
    • good
    • 0

 TZ環境変数で使える値の範囲はJST-167~JST+167です。

24H*7Days-1Hですね。

 ですので、%mの値を計算式で加工するしかないようです。逆に以前私がこの手のシェルを作ったときはTZ=JSTの方法を知らなくて素直にそうしたことがありますよ。

 --系のオプションはSolarisでは使えないことのほうが多いですね。

# この解、よい方法を知っていらっしゃるかたがいたら是非私も教えて欲しいです。

この回答への補足

TZ環境変数で使えるのは+-167というのはどこかに明記されているのでしょうか。

補足日時:2005/02/17 18:21
    • good
    • 1

Solarisのdateコマンドでこれが出来るかどうかわかりませんが...


date --date '1 month ago'
で1ヶ月前の日付が帰ってきます。

この回答への補足

残念!Solarisでは使えないようですね。

ご回答ありがとうございました。

補足日時:2005/02/17 16:04
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A