用于增强日历以接受 MM、MMM、YYYY 的 Shell 脚本
我们将编写一个 shell 脚本来增强日历以接受任何月份作为 MM 或 MMM 或仅接受年份作为 YYYY 或月份和年份。我们的 shell 脚本将接受至少一个参数,即月份或年份。最多使用 2 个参数,分别是月和年。将使用指定的参数显示增强的日历。我们将在 Linux 中使用 cal 和 ncal 命令来显示日历。
方法一:使用cal命令
如果用户想要在 Linux 终端中快速查看日历,则 cal 是适合您的命令。默认情况下,cal 命令显示当前月历作为输出。
Linux 中的 cal 命令用于查看特定月份或全年的日历。 cal 命令中的单个参数定义要显示的四位数年份 (1-9999)。月 (1-12) 和年 (1 – 9999) 由两个参数表示。如果没有给出参数,则显示当前月份。
我们可以使用以下命令来了解更多关于 Linux 中的 cal 实用程序:
man cal
例如:
方法:
- 开始
- 检查参数是否传递
- 如果没有传递参数,则显示“无效参数并退出程序”
- 如果传递了 2 个参数,则
- 检查第一个参数是否大于 12,第二个参数是否大于 2021(当年)。
- 如果大于,则显示“无效的年或月”并转到步骤12
- 否则,如果只传递一个参数,则检查它是否大于 12。
- 如果大于 12,则视为一年。
- 然后显示指定年份的日历。
- 否则,如果参数小于 12,则传递的参数是一个月。
- 显示当年指定月份的日历。
- 出口。
以下是使用 cal 命令的实现:-
# Shell Script to Enhance the Calendar to Accept
# MM, MMM, YYYY using cal command
# check whether arguments are passed or not
if [ $# -eq 0 ]
then
# if arguments are not passed then display this
echo "Invalid Arguments"
# exit the program
exit
fi
# if 2 arguments are passed
if [ $# -eq 2 ]
then
# if argument 1 is greater than 12 or argument 2
# is greater than 2021
if [ $1 -gt 12 -o $2 -gt 2021 ]
then
# then display invalid month or year
echo "invalid Year or month"
# else display calender of the specified month
# and year
else
ncal $1 $2
fi
# if only one argument is passed then
else if [ $# -eq 1 ]
then
# if argument is greater than 12
if [ $1 -gt 12 ]
then
cal $1 # display calender of specified year
# else display calender of specified month
else
case $1 in #start switch case
01) m = jan;;
02) m = feb;;
03) m = mar;;
04) m = apr;;
05) m = may;;
06) m = jun;;
07) m = jul;;
08) m = aug;;
09) m = sep;;
10) m = oct;;
11) m = nov;;
12) m = dec;;
esac # end switch case
echo \" Calander for $1 Month : \"
# display calender of specified month using -m
cal -m $1
fi
fi
fi
输出:
方法二:使用ncal命令
ncal 命令也可用于显示日历。 ncal 命令具有与 cal 相同的功能,除了它可以垂直显示日历,列中的周而不是水平。我们可以使用以下命令来了解更多关于 Linux 中的 cal 实用程序:
man ncal
例如:
在上面的例子中,在cal或ncal命令中,如果用户在终端中输入“cal 2”命令,则会显示0002年的整个日历。但为了增强日历,如果用户输入2作为参数则应显示当前年份的第二个月。我们将使用 cal/ncal 实用程序来增强日历以接受 MM、MMM、YYYY。
以下是使用 ncal 命令的实现:-
# Shell Script to Enhance the Calendar to Accept MM, MMM, YYYY
# using ncal command
# check whether arguments are passed or not
if [ $# -eq 0 ]
then
# if arguments are not passed then display this
echo "Invalid Arguments"
# exit the program
exit
fi
if [ $# -eq 2 ] # if 2 arguments are passed
then
# if argument 1 is greater than 12 or argument 2 is
# greater than 2021
if [ $1 -gt 12 -o $2 -gt 2021 ]
then
# then display invalid month or year
echo "invalid Year or month"
# else display calender of the specified month and year
else
ncal $1 $2
fi
else if [ $# -eq 1 ] # if only one argument is passed then
then
if [ $1 -gt 12 ] # if argument is greater than 12
then
cal $1 # display calender of specified year
else # else display calender of specified month
case $1 in #start switch case
01) m = jan;;
02) m = feb;;
03) m = mar;;
04) m = apr;;
05) m = may;;
06) m = jun;;
07) m = jul;;
08) m = aug;;
09) m = sep;;
10) m = oct;;
11) m = nov;;
12) m = dec;;
esac # end switch case
echo \" Calander for $1 Month : \"
ncal -m $1 # display calender of specified month using -m
fi
fi
fi
#end if
输出:
ncal 命令将以更增强的方式显示日历。
在脚本中,如果用户输入一个参数,那么我们将检查它是否大于 12,如果它大于 12,则该参数将被视为一年,否则参数将被视为一个月。如果没有给出参数,则显示“无效参数”。如果给出 2 个参数,那么它将表示一个月和一年。
要运行 shell 脚本,请使用:
./cal.sh
示例:
./cal.sh 4
./cal.sh 8 2021
./cal.sh 1999
使用以下命令授予 shell 脚本执行权限:
chmod +x cal.sh
因此,上述 Shell 脚本将增强日历以接受 MM、MMM、YYYY。