unix下的日历问题

unix下的日历问题

我想打印日期以及特定年份月份的各自日期。

输入的示例年份是 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,那么这就是你将被困住的地方。

相关内容