要求是在任何一年的 3 月最后 2 日进行 CI 流程,这意味着:
今天是:2024 年 2 月 23 日 - 3 月最后 2 日将是 02/03/2023
今天是:2024 年 3 月 23 日 - 3 月最后 2 日将是 02/03/2024(当年)
我如何在 CI 过程中自动化它(使用
date
命令)?
就这么简单:
samveen@zero2w:~ $ date -d 'march 2 last year'
Thu 2 Mar 00:00:00 IST 2023
根据需要提供输出格式参数。
编辑:正如评论中所指出的,这仅适用于 GNU 日期(即 Linux 和类似环境(即 Ubuntu WSL)。
在 Bash 上,如果您只有 POSIX 或 BSD
date
,您可以执行以下操作:
#!/bin/bash
this_year=$(date "+%Y")
last_year=$(( this_year-1 ))
month=$(date "+%m")
day=$(date "+%d")
if [[ "${this_year}${month}${day}" > "${this_year}0302" ]] then
echo "${this_year}0302"
else
echo "${last_year}0302"
fi
这是有效的,因为
YYYYMMDD
的格式可以正确地按照与实际日期相对应的字典顺序对表示日期的字符串进行排序。这由 ISO 8601 标准代表。