その週の最初の月曜日の日付をshell で取得したいのですが、どうすると簡単なのでしょうか?

下記のようにするとできるかなと思ったのですが、エラーになってしまいます。出力結果をコピペするときちんとでます。
>>
d=`date +%w`
S="date -d '$d days ago' +%Y%m%d"
echo $S
$S
上記を実行すると下記になる。出力結果をコピペすると、きちんと動く
date -d '2 days ago' +%Y%m%d
date: extra operand `ago\''
<<

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2012/05/29 17:16:59
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント50pt

シェル変数 S に、いきなり結果を入れるなら。

S=`date -d "$d days ago" +"%Y%m%d"`


どうしても、シェル変数 S にコマンドを入れたいなら。

d=`date +%w`
S="date -d \"$d days ago\" +\"%Y%m%d\""
echo $S
eval $S



日付の書式を \" でくくらなくても動きそうな気もする。
でも、くくらないと、何となく気持ち悪いので、くくってます。



【追記】
シェル変数 S に、いきなり結果を入れる場合で、どうしても展開してる内容を確認したいなら。

d=`date +"%w"`
set -x
S=`date -d "$d days ago" +"%Y%m%d"`
set +x
echo $S
id:kaiketsu

なるほどこうかけばいいのですね。

2012/05/29 17:14:03

その他の回答3件)

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154ここでベストアンサー

ポイント50pt

シェル変数 S に、いきなり結果を入れるなら。

S=`date -d "$d days ago" +"%Y%m%d"`


どうしても、シェル変数 S にコマンドを入れたいなら。

d=`date +%w`
S="date -d \"$d days ago\" +\"%Y%m%d\""
echo $S
eval $S



日付の書式を \" でくくらなくても動きそうな気もする。
でも、くくらないと、何となく気持ち悪いので、くくってます。



【追記】
シェル変数 S に、いきなり結果を入れる場合で、どうしても展開してる内容を確認したいなら。

d=`date +"%w"`
set -x
S=`date -d "$d days ago" +"%Y%m%d"`
set +x
echo $S
id:kaiketsu

なるほどこうかけばいいのですね。

2012/05/29 17:14:03
id:papa-tomo No.2

回答回数362ベストアンサー獲得回数107

ポイント15pt

こうしたらどうですか?

d=`date +%w`
S=`date -d "$d days ago" +%Y%m%d`
echo $S

id:papa-tomo

おっと、書いている間に投稿されていましたね

2012/05/29 15:39:22
id:y-kawaz No.3

回答回数1422ベストアンサー獲得回数226

ポイント20pt

それだと日曜日の日付になる気がしますが…、まぁワンライナーで書きたいならこんな感じで良いかと。

S=`date -d "\`date +%w\` days ago" +%Y%m%d`
echo $S

もしくは

S=`date -d \`date +%w\`\\ days\\ ago +%Y%m%d`
echo $S

とか

S=`date -d -\`date +%w\`days +%Y%m%d`
echo $S

とか

id:TransFreeBSD No.4

回答回数668ベストアンサー獲得回数268

ポイント15pt

たしか、曜日直接指定できたよな、と思ったら次回の日付になっちゃうわけですね。
ならば

S=`date -d "sat 5 days ago" +%Y%m%d`
echo $S

次の土曜(今日が土曜なら今日)の5日前ってことで。
http://ideone.com/Bm8BB

id:a-kuma3

あ、ideone.com に bash あるんだ。

2012/05/29 17:11:18

コメントはまだありません

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

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

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

回答リクエストを送信したユーザーはいません