![unix下的日历问题](https://linux22.com/image/128217/unix%E4%B8%8B%E7%9A%84%E6%97%A5%E5%8E%86%E9%97%AE%E9%A2%98.png)
我想打印日期以及特定年份月份的各自日期。
输入的示例年份是 2018 年,月份是二月。因此输出将显示
Date. Day
1. thursday
2. Saturday
.
.
.
.
28. Wednesday
答案1
你正在为 Linux 初学者描述一个很好的练习,所以我不会给你填作业,但我会回答帮助你做。
首先学习如何使用该date
命令,该命令是awk
.该date
命令有一个功能,可以以数字格式输出星期几,因此如果您在命令行中键入date +%u
,您将获得星期几,从周一。对于另一天的星期几,请使用选项d
,例如date -d2018-02-22 +%u
。还有+%A
您所在区域的星期几名称的格式代码,例如“星期四”。有关该命令的详细信息和许多其他好处,请参阅手册页date
。
然后你就有一个选择。您可以迭代该date
命令,打印该月每一天的结果,或者您可以使用您觉得舒服的任何脚本或编程语言进行本机迭代。例如,您可以使用模数数学运算符%
循环一周中的 7 天n%7
,并使用语句形式case
进行打印操作,或者您可以定义一周中各天名称的七个元素数组。作为示例,以下是如何在 中定义和使用数组bash
:
dow=( Sun Mon Tues Wed Thu Fri Sat ) ; printf "%s\n" ${dow[4]}
剩下的就是告诉你的循环何时停止,即。您正在处理的月份有多少天。使用包含 12 个元素的数组可能是最简单的,每个元素包含该月的天数。您需要进行外部测试来检查闰年 2 月是否有 29 天。
至于使用awk
,你可以使用它,但它不太可能是完成这项工作的最佳工具,因为它被设计为流编辑器,并且您没有处理流。但是,如果您的作业需要 awk
,那么这就是你将被困住的地方。