シェルスクリプトで以下のように一週間以内のの日付を取得したいのですが

どうすればよろしいでしょうか?
count=1
while [ $count -le 7 ];
do
DATE =`date -d ${count}' days ago' +%Y%m%d`
echo $DATE
count=`expr $count + 1`
done

回答の条件
  • 1人2回まで
  • 登録:2008/11/29 23:48:15
  • 終了:2008/11/30 01:31:38

回答(3件)

id:goodvn No.1

goodvn回答回数228ベストアンサー獲得回数182008/11/30 00:18:48

ポイント20pt

うちでは下記で動きました

count=1
while [ $count -le 7 ];
do
DATE=`date -v-${count}d +%Y%m%d`
echo $DATE
count=`expr $count + 1`
done

FreeBSD の date コマンドなので,GNU date とはちょっと仕様が違うかもしれません

id:hopefully

FreeBSDではないので、ダメでした・・・

7日前などは以下のコマンドで取得。

SEVEN_DAYS_AGO=`date -d '7 days ago' +%Y%m%d`

2008/11/30 00:28:19
id:goodvn No.2

goodvn回答回数228ベストアンサー獲得回数182008/11/30 00:15:00

ポイント10pt

うちでは下記で動きました

count=1
while [ $count -le 7 ];
do
DATE=`date -v-${count}d +%Y%m%d`
echo $DATE
count=`expr $count + 1`
done

FreeBSD の date コマンドなので,GNU date とはちょっと仕様が違うかもしれません

id:ngsw No.3

ngsw回答回数5ベストアンサー獲得回数02008/11/30 00:54:09

ポイント50pt

DATE =`date -d ${count}' days ago' +%Y%m%d`

ではなく

DATE=`date -d ${count}' days ago' +%Y%m%d`

で以下の動作を確認しました。

"DATE=" で "DATE ="だと期待通りの動作をしませんでした。

Cygwin bash です。


20081129

20081128

20081127

20081126

20081125

20081124

20081123


ちなみに

date -d 7'days ago'

date -d '7 days ago'

はどっちでも動作しました。

id:hopefully

イコールの前のスペース消したら動きました。

ありがとうございます。

2008/11/30 01:29:55
  • id:taknt
    >一週間以内のの日付

    この 「のの日付」の省略されているところが 重要なのでは?
  • id:hopefully
    これはのをひとつ消し忘れました。
    すいません。
  • id:goodvn
    すいません.投稿時にエラーが頻発し,二重になってしまったようです

    元のコードですが,クオートの位置が変ですが,これは typo ですか?

    DATE =`date -d ${count}' days ago' +%Y%m%d`

    ではなく,

    DATE =`date -d '${count} days ago' +%Y%m%d`

    ですね
  • id:hopefully
    ありがとうございます。
    ですが、そちらも試したのですが動きませんでした。
  • id:goodvn
    私のコードでもスペースは無意識に消してました (さすがに typo と思いまして...)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません