昨天日期(最后一个工作日)的bash shell脚本

oom*_*pah 11 bash date

我正在编写一个bash脚本,需要打印最后一个工作日的日期.因此,例如,如果脚本在星期一运行,它将打印上周五的日期.

我发现这打印昨天的日期:

date -d '1 day ago' +'%Y/%m/%d'
Run Code Online (Sandbox Code Playgroud)

我也知道我可以通过使用此声明获得一周中的某一天

date +%w
Run Code Online (Sandbox Code Playgroud)

我想结合这两个语句,以便有一个小帮助脚本打印所需的日期.逻辑是这样的(注意:它的伪代码 - 我从来没有写过bash脚本)

DAY_OF_WEEK = `date +%w`
if (%DAY_OF_WEEK == 1)
   LOOK_BACK = 3
elif   
   LOOK_BACK = 1
fi

echo `date -d '%LOOK_BACK day ago' +'%Y/%m/%d'`
Run Code Online (Sandbox Code Playgroud)

有人可以通过纠正上面的伪代码来帮助吗?

(我在Ubuntu 10.0.4上运行)

kev*_*ine 17

你太近了:

day_or_week=`date +%w`
if [ $day_or_week == 1 ] ; then
  look_back=3
else
  look_back=1
fi

date -d "$look_back day ago" +'%Y/%m/%d'
Run Code Online (Sandbox Code Playgroud)

  • 我认为有一个错字:$day_or_week 应该是 $day_of_week,对吧 (2认同)

Don*_*ark 7

周日也需要检查。

DAY_OF_WEEK=`date +%w`
if [ $DAY_OF_WEEK = 0 ] ; then
  LOOK_BACK=2
elif [ $DAY_OF_WEEK = 1 ] ; then
  LOOK_BACK=3
else
  LOOK_BACK=1
fi

date -d "$LOOK_BACK day ago" +'%Y/%m/%d'
Run Code Online (Sandbox Code Playgroud)