下記のようにするとできるかなと思ったのですが、エラーになってしまいます。出力結果をコピペするときちんとでます。
>>
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\''
<<
シェル変数 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
日付の書式を \" でくくらなくても動きそうな気もする。
でも、くくらないと、何となく気持ち悪いので、くくってます。
d=`date +"%w"` set -x S=`date -d "$d days ago" +"%Y%m%d"` set +x echo $S
シェル変数 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
日付の書式を \" でくくらなくても動きそうな気もする。
でも、くくらないと、何となく気持ち悪いので、くくってます。
d=`date +"%w"` set -x S=`date -d "$d days ago" +"%Y%m%d"` set +x echo $S
なるほどこうかけばいいのですね。
こうしたらどうですか?
d=`date +%w`
S=`date -d "$d 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\\ ago +%Y%m%d` echo $S
とか
S=`date -d -\`date +%w\`days +%Y%m%d` echo $S
とか
たしか、曜日直接指定できたよな、と思ったら次回の日付になっちゃうわけですね。
ならば
S=`date -d "sat 5 days ago" +%Y%m%d` echo $S
次の土曜(今日が土曜なら今日)の5日前ってことで。
http://ideone.com/Bm8BB
あ、ideone.com に bash あるんだ。
なるほどこうかけばいいのですね。
2012/05/29 17:14:03