Commandline Calender

An interesting commandline calender. If you don't supply an argument it will show you the output of cal (current month) but if you supply it a number 12 and lower it will show you that month in this year but if the number is 13 or above it will show you a calender of the year specified.



#!/bin/bash
# Syntax acal

function acal {
m=""
case $# in
0) cal; return;;                #no arguments
1) m=$1; y=`date +%Y`;;         #1 argument
2) m=$1; y=$2;;                 #2 arguments
esac

case $m in
Jan*|jan*      ) m=1;;
Feb*|feb*      ) m=2;;
Mar*|mar*      ) m=3;;
Apr*|apr*      ) m=4;;
May|may        ) m=5;;
Jun*|jun*      ) m=6;;
Jul*|jul*      ) m=7;;
Aug*|aug*      ) m=8;;
Sep*|sep*      ) m=9;;
Oct*|oct*      ) m=10;;
Nov*|nov*      ) m=11;;
Dec*|dec*      ) m=12;;
[1-9]|1[0-2] ) ;;         #numeric month
*     ) y=$m; m="";;
esac
cal $m $y
}

acal $1