Você está perdendo aspas:
grep Failed /var/log/secure | grep "$monthday" >> ~/logs/failed.log
# .................................^.........^
Sem as aspas, o grep verá 2 argumentos - o grep irá ignorar o stdin e procurar a string "Feb" no arquivo "28". Eu vejo um erro "grep: 28: nenhum tal arquivo ou diretório"