Você precisa colocar um espaço depois dos colchetes, [[
.
if [[ $# == $year $month $day ]] ; then
cal $day $month $year
fi
Além disso, você escreveu que não funciona. Você compara $#
e $year $month $day
como uma string, ou algo totalmente diferente. Talvez:
if [[ "$#" == "$year$month$day" ]] ; then
cal $day $month $year
fi