我需要通过传递先前的日期作为命令行参数来执行脚本。它必须是自动化的。那么,我如何将前一个日期传递给脚本呢?
例如:
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 和 MacOS和BSDdate
,加上 illumos 和其他非 GNU 系统:
YESTERDAY="$(date -r $(expr $(date +%s) - $(expr 60 \* 60 \* 24)) +%Y-%m-%d)"
sh processFile.sh $YESTERDAY $YESTERDAY
在 GNU/Linux 上,使用date
GNU coreutils:
YESTERDAY="$(date -d-1day +%Y-%m-%d)"
sh processFile.sh $YESTERDAY $YESTERDAY