我需要在我学习中使用的代码中写几行,我真的放弃了!目前,我可以列出一个月中的天数和等效的天数,但我无法将其链接到系统时钟,因此它会每月自动提取正确的日期数字。
这是我所做的:
#!/bin/bash
for (( i = 0; i < 30; ++i )); do
echo -e "$( date -d "now +${i} days" +"%a" )", ${i}
done
输出:
Fri, 0
Sat, 1
Sun, 2
Mon, 3
Tue, 4
Wed, 5
Thu, 6
Fri, 7
Sat, 8
Sun, 9
Mon, 10
Tue, 11
Wed, 12
Thu, 13
. . . .
.. . etc
我希望这段代码列出给定月份中正确的天数。例如,十月份有/31/天。当我在 11 月份运行代码时,它必须列出 30 天,当我在 3 月份运行代码时,它会列出 31 天,在 2 月份运行它时,它会列出 28 或 29 天,依此类推。我怎样才能做到这一点?
答案1
事实上,你很接近。以下是一些小修改:
#!/bin/bash
var=$(cal $(date +"%m %Y") | awk 'NF {DAYS = $NF}; END {print DAYS}') # Get number of days in a month
for (( i = 1; i < ${var}+1; ++i )); do
echo -e "$( date -d "now +${i} days" +"%a" )", ${i}
done
答案2
date
通过询问下个月的第一天来计算最后一天,然后减去一天;然后循环:
begin=1
end=$(date -d "$(date -d "$(date -d "next month" +"%Y%m01")") - 1 day" +%d)
for((i=begin;i<end;i++))
do
date -d "$(date +%Y/%m/$i)" +"%a, $i"
done