Вам нужно изменить кавычки вокруг команды grep для обратных циклов:
for i in `grep -l matchpattern "$firstdir"/*`; do
Или принять новый стиль $():
for i in $(grep -l matchpattern "$firstdir"/*); do
Источник: обратные кавычки