「date」関数を使用して変数を記述する必要があり、形式は yyyymmdd (つまり 20151031) である必要があります。また、1 日を削除します (つまり 20151031 は 20151030 になります)。bash を使用します。
ありがとう!
答え1
date +%Y%m%d
現在の日付を印刷するには を使用します。昨日の日付を印刷するには を
使用しますdate --date '1 day ago' +%Y%m%d
(GNU のdate
)。(FreeBSD)
を使用します。date -v -1d +Y%m%d
答え2
bash-4.2 以降には、そのための組み込みサポートがあります (ksh93 の同様のものからインスピレーションを得ています)。
printf -v now '%(%s)T' -1
printf '%(%Y%m%d)T\n' "$((now - 86400))"
昨日の日付 (正確には 86400 秒前の日付) を YYYYMMDD 形式で出力します。冬/夏時間の切り替え時 (1 日が 23 時間または 25 時間の場合) の夜間の特定の時間に実行すると、機能しない可能性があります。
おそらく、次のように記述すると、これらのコーナーケースではより信頼性が高くなるでしょう。
printf -v now '%(%s:%H)T' -1
printf '%(%Y%m%d)T\n' "$((${now%:*} - 3600 * (12 + ${now#*:})))"