Bash 脚本:通过引用该周的星期一来获取该月的周数

Bash 脚本:通过引用该周的星期一来获取该月的周数

我希望能够使用 Ubuntu Linux 中的 bash 脚本检索当前星期一的数字。

示例和信息:上周一(10 月 30 日)是 10 月的第五个星期一,周三是 11 月的第一天,显然也是第一个星期三。我尝试编写的脚本将验证备份程序是否有正确的周媒体可用。我有 1-5 周的媒体可用。脚本将运行并检查当前周的星期一是第几周。本周它将检查并发现星期一是第五个星期一,这意味着应该有第 5 周的媒体。下周它将检查并发现这是第一个星期一,因此应该有第 1 周的媒体。

该脚本将每天(周一至周五)运行,并且仅引用周一的周数。这意味着周一是第 1 周、第 2 周、第 3 周、第 4 周,在某些月份是第 5 周。

我有一个 date 命令,它带有一些算术功能,可以让我得到月份中的周数,但它只能根据当前日期来执行此操作。它是这样的:

$((($(date +%-d)-1)/7+1))

希望我解释得足够清楚,且不让读者感到困惑。

任何帮助都将不胜感激。谢谢!

答案1

我们可以date使用参数 -d 来指示其输出基于特定日期,而不是今天的日期。有效的格式字符串是“上周一”,因此我们只需要检查今天是否是周一:

$ if [ "$(date +%A)" == "Monday" ]; then Monday="today"; else Monday="last Monday"; fi; echo $((($(date -d "$Monday" +%-d)-1)/7+1))
5

相关内容