• ベストアンサー

UNIXシェル内での日付計算

日付計算系の質問はたくさんありましたがこのタイプが 無かったんで質問させていただきます。 やりたいことは題名そのまんまなんですが、具体的に言う と、UNIX(今使ってるのがHP-UX11.0)上のバッチシェル で、前日の日付を取得したいのです。できれば中間ファ イル(一時ファイル)などを生成せずにシェル内で計算を 済ませたいのですが、何か方法はないのでしょうか。 (Ex.) 現在の日付   2002年1月1日 取得したい日付 2001年12月31日 具体的な方法とか書いてあるとさらにうれしいのですが・・・ それではよろしくお願いします。

  • ro-su
  • お礼率44% (11/25)

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

環境変数 TZ をいじることで実現できるはずです。 お使いの環境は日本標準時(TZ が JST-9)だと想定して話をします。 環境変数 TZ の -9 は、グリニッジ標準時との ずれ を表しているわけですが、 これを一日前にずらしてしまいます。 具体的には、こんな感じ。 % env TZ=JST+15 date GNU のコマンドが席巻するまでは、割と有名だったやり方です。 もうひとつのやり方として、GNU の date をインストールして No.1 の回答の ようにする、という手もありますね。

ro-su
質問者

お礼

上記のコマンドを実行したらきっちり前日の日付が出てきました。どうやら、条件を満たすのはこれが一番みたいですね。 情報提供ありがとうございました。

その他の回答 (2)

  • tailkuppa
  • ベストアンサー率53% (52/98)
回答No.3

他の方がおっしゃるとおり、 GNU の date をインストールしてよい環境であれば、それを使うのが一番楽だと思います。 ただ、HP-UX のデフォルトのdate だと、現在日付しか扱えないんですよね。 ニュースグループの fj.unix.shells で、1999年の7月頃この話題が出ていたようです。 下のサイトの[保存された記事を読む]でグループ名にfj.unix.shells 、期間に199907 を指定して見てみてください。

参考URL:
http://queen.heart.ne.jp/cgi-bin/queen4
ro-su
質問者

お礼

情報提供ありがとうございます。 参照先の情報はほぼGNU版dateとTZを使ったやり方しか載っていませんでした。 それではかなり参考になりました。

  • natural
  • ベストアンサー率37% (419/1115)
回答No.1

HP-UXは使用していないので判りませんが、Linux上では date --date '1 days ago' とやると昨日の日付が取得出来ます。 オプション等が異なるかもしれませんが、dateコマンドのmanを引くと同様のオプションがあるかもしれませんのでご覧下さい。 後は出力形式のオプションを付加すればお望みの形で出力出来ると思うのですが…。

ro-su
質問者

補足

回答ありがとうございます。 HP-UX上では残念ながら上記の書式はサポート されていませんでした。 (dateはあくまで現在の日付の表示、又は日付設定) なので引き続きアドバイスか何か遭ったらよろしくお願いします。

関連するQ&A

  • UNIXシェル内での日付計算

    UNIX(今使ってるのがHP-UX11i)上のバッチシェルで、 指定した日数分の前の日付を取得したいのですが、 何か方法はないでしょうか。 (例) 現在の日付: 20060511 指定した日数: 10(MAX値は100程度) 取得する日:20060501

  • unixのシェルを自動で、キックしたい

    現在のUNIXのデイリーバッチジョブの起動を、できる範囲で自動化したいのですが、 UNIX初心者の為、どうしたら良いのか、全く判りません。 《現在の流れ》 (1)windows のoutlookメールで、バッチジョブの依頼を受ける。(リクエスト項目は、対象日付と対象時間) (2)telnetでunixサーバにログインして、対象の業務のシェルの日付をパラメータで渡して、 手動でシェルをキックをする。 (3)cronで完了メールと実行ログの送出をする。 unixは、HP-UX11.0で、kシェルを使用しています。 上記のような事は、どうしたら実現できるのでしょうか?。 また、wshで、メールの解析をして、バッチジョブ依頼メールから、リクエスト項目を抽出し、 unix シェルの自動起動をする。などという事は、可能なのでしょうか?。 どなたか、詳しい方、お教え願い下さい。 よろしくお願い致します。 同じような運用の仕方をされている方、もしくはお判りの方、ぜひお教えください。

  • シェル内での文字列日付計算

    お世話になります。 シェルスクリプト内であるファイルからファイル名日付を取得し、 その日付の1日前の日付を取得するためにはどうしたらよいのでしょうか? 現在日時からの日付計算をする方法は見つけることできましたが、 文字列(yyyymmdd)から直接日付計算を行うためにはどうすればよいのでしょうか? 単純に`expr yyyymmdd - 1`のような計算では20121001 → 20121000のようになり、 日付として計算されません。 上記、ご存知の方がいればご教示いただきたく存じます。 よろしくお願いいたします。

  • シェルにて日付計算して値を取得したい

    シェルにて日付計算して値を取得したい A = 'date -d "1 days ago" + "%Y%m%d"' B = Aの2ケ月前を設定したい 悩んでいるところ↓ 上記のように、システム日付に1日前を変数Aへ格納して、その変数Aの2ケ月前を求めるには、どのようにしたらよいのでしょうか?

  • unixのシェルでファイル内容を読み込む

    ど初心者です。わかりづらいかもしれませんが宜しくお願いします。 以下のような処理を行いたいと考えています。 (1) aaa.sh(シェルスクリプト)にてバッチプログラムを起動 (2)バッチでエラーの場合、結果ファイル(bbb.txt)に「1」を出力する。 (3)aaa.sh(シェルスクリプト)にて結果ファイルの内容を読み取り「1」の場合は、再度バッチプログラムを起動する。 このうち(3)の処理にて、結果ファイルの読み込み方法がわかりません。 調べた結果、以下のような処理で可能なようですが・・ while read LINE; do echo $line done < aaa.txt 読み込むのは1行なので、ループ処理にはしたくないのですが、例えば「read LINE aaa.txt」のような簡単なコマンドで、ファイルの中身を読み込むことはできないのでしょうか? 実はUNIXが初めてで、しかもスケジュールに余裕がないため焦っております。 なにぶん知識不足な故、ちんぷんかんぷんな質問かも知れませんが、よろしくお願いいたします。

  • 日付計算について

    OSはunixでc言語、Oracleを使ってます。 文字型の日付データ(YYYYMMDD)を元に、-n日を取得する方法を教えていただきたいのですが。 宜しく御願い致します。

  • String の日付をunixタイムスタンプに変換

    unixタイムスタンプを日付のStringから取得したいのですが、方法がわかりません。 getTimestampを使って出来ますか?

    • ベストアンサー
    • Java
  • シェルスクリプト内のcdで、カレントディレクトリを変えるには?

    シェルスクリプト内のcdコマンドで、カレントディレクトリを変えるにはどうしたらいいか?をどうか教えて下さい。 MS-DOSのバッチファイル内で"cd XXXXX"と書き実行した時の動作を、UNIX(CygWin)環境でも行いたいです。 が、シェルスクリプトは(サブシェルで動く為)カレントディレクトリが変わってくれません。aliasコマンド等でいろいろ実験しましたが、DOSバッチファイルのように「バッチファイル単体でディレクトリ移動が出来る方法」を探し出せませんでした。 極めて初歩的とは存じますが、どうか宜しくお願い致します。

  • エクセルの日付計算

    エクセルの日付計算 エクセルの日付計算について教えてください。具体的に言いますと、 3月12日を基本納期として何日早くできたか、何日遅れてしまったがを表示したいのです。たとえば3月12日を基本に3月15日と入力すると「―3日」、3月10日と入力すると「2日」を表示したいのです、「日」の表示は特にいりません、数値だけで良いです。宜しくお願いいたします。

  • シェルからtelnet接続する方法について

    UNIX、HP-UX環境での話ですが、 シェルからtelnet接続する方法がわかりません。 (出来れば接続のタイミング等もプロンプトに表示させたくないのですが) ※ftpで接続した後にあるディレクトリにあるファイル名が存在するかをチェックするのは厳しそうなので・・・・ ※ちなみにexpectは使用出来ません。 申し訳ないですが、何か良い方法があったらご教授願いますでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • CGI