- Community Home
- >
- HPE Community, Japan
- >
- HP-UX
- >
- HP-UX General
- >
- 引数で1ヶ月前を指定したい
カテゴリ
Company
Local Language
フォーラム
ディスカッションボード
フォーラム
- Data Protection and Retention
- Entry Storage Systems
- Legacy
- Midrange and Enterprise Storage
- Storage Networking
- HPE Nimble Storage
ディスカッションボード
ディスカッションボード
ディスカッションボード
ディスカッションボード
フォーラム
ディスカッションボード
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
- BladeSystem Infrastructure and Application Solutions
- Appliance Servers
- Alpha Servers
- BackOffice Products
- Internet Products
- HPE 9000 and HPE e3000 Servers
- Networking
- Netservers
- Secure OS Software for Linux
- Server Management (Insight Manager 7)
- Windows Server 2003
- Operating System - Tru64 Unix
- ProLiant Deployment and Provisioning
- Linux-Based Community / Regional
- Microsoft System Center Integration
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
フォーラム
ブログ
- RSS フィードを購読する
- トピックを新着としてマーク
- トピックを既読としてマーク
- このトピックを現在のユーザーにフロートします
- ブックマーク
- 購読
- 印刷用ページ
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
11-16-2005 09:57 PM
11-16-2005 09:57 PM
引数で1ヶ月前を指定したい
ログのファイル名末尾(年月)を引数にして"date +%Y%m"でexpr使って1減らすという苦しいことを考えたのですが1月は0月になってしまうことに気づき、さらに苦し紛れで1月判別用のMONTH(月)加えてIF文でMONTH=0ならMONTH=12にしてDATEを去年の12月にしなさいというシェルを組みました。
<以下実行文>
DATE=$(expr $(date +%Y%m) - 1)
MONTH=$(expr $(date +%m) - 1)
if
then
YEAR=$(expr $(date +%Y) - 1)
MONTH=12
DATE=$(echo $YEAR$MONTH)
if
以下引数DATEでログ取得を実行・・・
サーバ時間の変更ができない為、不安なのが1月のdateの実行結果が-1したところで本当に上記の文で実行されるのかどうか・・・
「0」ではなくて「00」にしなくてはならない?
こうすればいい等、ご教授いただけましたら幸いです。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
11-17-2005 08:29 AM
11-17-2005 08:29 AM
引数で1ヶ月前を指定したい
私も過去日付取得で悩んでいて、決定的な方法はまだ見つけていないのですが、
たとえばファイル名(末尾以外)が固定で、
末尾がなら
cd /foo/log
FILE=$(ls sample.log.* |tail -2 |head -1)
で、対象ファイル名が直接とれるんじゃないでしょうか?
あと、システムに変更をくわえても良いのならGNUのdateコマンドには過去日付取得オプションがありますよ。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
11-17-2005 08:31 AM
11-17-2005 08:31 AM
引数で1ヶ月前を指定したい
とりあえず、取得は出来ているので1月のみ不安です。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
11-17-2005 11:37 AM
11-17-2005 11:37 AM
引数で1ヶ月前を指定したい
何度もdateを実行していますので可能性は低いですが、実行した時間によっては最初のdateの実行したタイミングと2度目以降のdateの実行で別の結果になってしまうことがあるかもしれません。
こんなのではいかがでしょうか。
DATE=`date +%Y%m`
MONTH=`expr $DATE % 100`
if ; then
DATE=`expr $DATE - 100 + 11`
else
DATE=`expr $DATE - 1`
fi
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
11-17-2005 04:03 PM
11-17-2005 04:03 PM
引数で1ヶ月前を指定したい
(( DATE = $( date +"%04Y%02m" ) ))
(( YEAR = DATE / 100 ))
(( MONTH = DATE % 100 - 1 ))
(( MONTH <= 0 )) && (( MONTH = 12 ))
FNAME=$( printf "log_%02d%02d" $YEAR $MONTH )
echo $FNAME
一行目で年と月を6桁で取り込み、
二行目で、DATEを100で割り年を取り出します。
三行目で、1を引いた月を取り出します。
四行目で、三行目の結果が0以下であれば月を12に設定しなおします。
五行目は、得た年と月をprintf(1)を用いフォーマット指定して出力しています。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
11-19-2005 10:16 AM
11-19-2005 10:16 AM
引数で1ヶ月前を指定したい
ただ、0月問題は解決できたのですが
年から更にマイナスすることを行わなくてはならないのですが
記述的には
(( MONTH <= 0 )) && (( YEAR = YEAR - 1 ))
これを一行付け加えればいいのでしょうか?
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
11-19-2005 11:02 AM
11-19-2005 11:02 AM
引数で1ヶ月前を指定したい
今回はisao様の表記を利用させていただき
年月を1ヶ月に戻すほうほうとして
(( MONTH <= 0 )) && (( MONTH = 12 )) && (( YEAR = YEAR - 1 ))
これでいけることを確認いたしました。
コマンドの詳細などもう少し勉強しなくてはなりませんね・・・orz
本当にありがとうございました。