- ベストアンサー
UNIXシェル内での日付計算
日付計算系の質問はたくさんありましたがこのタイプが 無かったんで質問させていただきます。 やりたいことは題名そのまんまなんですが、具体的に言う と、UNIX(今使ってるのがHP-UX11.0)上のバッチシェル で、前日の日付を取得したいのです。できれば中間ファ イル(一時ファイル)などを生成せずにシェル内で計算を 済ませたいのですが、何か方法はないのでしょうか。 (Ex.) 現在の日付 2002年1月1日 取得したい日付 2001年12月31日 具体的な方法とか書いてあるとさらにうれしいのですが・・・ それではよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
環境変数 TZ をいじることで実現できるはずです。 お使いの環境は日本標準時(TZ が JST-9)だと想定して話をします。 環境変数 TZ の -9 は、グリニッジ標準時との ずれ を表しているわけですが、 これを一日前にずらしてしまいます。 具体的には、こんな感じ。 % env TZ=JST+15 date GNU のコマンドが席巻するまでは、割と有名だったやり方です。 もうひとつのやり方として、GNU の date をインストールして No.1 の回答の ようにする、という手もありますね。
その他の回答 (2)
- tailkuppa
- ベストアンサー率53% (52/98)
他の方がおっしゃるとおり、 GNU の date をインストールしてよい環境であれば、それを使うのが一番楽だと思います。 ただ、HP-UX のデフォルトのdate だと、現在日付しか扱えないんですよね。 ニュースグループの fj.unix.shells で、1999年の7月頃この話題が出ていたようです。 下のサイトの[保存された記事を読む]でグループ名にfj.unix.shells 、期間に199907 を指定して見てみてください。
お礼
情報提供ありがとうございます。 参照先の情報はほぼGNU版dateとTZを使ったやり方しか載っていませんでした。 それではかなり参考になりました。
- natural
- ベストアンサー率37% (419/1115)
HP-UXは使用していないので判りませんが、Linux上では date --date '1 days ago' とやると昨日の日付が取得出来ます。 オプション等が異なるかもしれませんが、dateコマンドのmanを引くと同様のオプションがあるかもしれませんのでご覧下さい。 後は出力形式のオプションを付加すればお望みの形で出力出来ると思うのですが…。
補足
回答ありがとうございます。 HP-UX上では残念ながら上記の書式はサポート されていませんでした。 (dateはあくまで現在の日付の表示、又は日付設定) なので引き続きアドバイスか何か遭ったらよろしくお願いします。
お礼
上記のコマンドを実行したらきっちり前日の日付が出てきました。どうやら、条件を満たすのはこれが一番みたいですね。 情報提供ありがとうございました。