将之前的日期作为 shell 脚本的参数

将之前的日期作为 shell 脚本的参数

我需要通过传递先前的日期作为命令行参数来执行脚本。它必须是自动化的。那么,我如何将前一个日期传递给脚本呢?

例如:

sh processFile.sh previousdate previousdate

答案1

使用 GNU date

previousdate=$( date -d 'yesterday' +'%F' )
sh processFile.sh "$previousdate" "$previousdate"

对于 macOS date

previousdate=$( date -j -v -1d +'%F' )
sh processFile.sh "$previousdate" "$previousdate"

答案2

您可以使用它来获取前一天并将其作为参数传递:

 date +%Y-%m-%d -d "1 day ago"

有关更多信息,请参阅甚至可以操纵分钟和秒man的页面。date

答案3

这会起作用:

sh processFile.sh "$(date +"%Y-%m-%d" -d "yesterday")"  "$(date +"%Y-%m-%d" -d "yesterday")"

答案4

OpenBSD,FreeBSD 和 MacOSBSDdate,加上 illumos 和其他非 GNU 系统:

YESTERDAY="$(date -r $(expr $(date +%s) - $(expr 60 \* 60 \* 24)) +%Y-%m-%d)"
sh processFile.sh $YESTERDAY $YESTERDAY

在 GNU/Linux 上,使用dateGNU coreutils:

YESTERDAY="$(date -d-1day +%Y-%m-%d)"
sh processFile.sh $YESTERDAY $YESTERDAY

相关内容