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