Это нормальное поведение по умолчанию: если подстановка не соответствует ни одному файлу / каталогу, оригинальный символ подстановки будет сохранен.
Если вместо этого вы хотите получить пустой результат, вы можете установить параметр nullglob
в своем скрипте следующим образом:
$ shopt -s nullglob
$ for f in "$my_dir"*."$ext"; do echo $f; done
$
Вы можете отключить его впоследствии с помощью:
$ shopt -u nullglob