Этот скрипт не использует опрос.  Другими словами, он не делает периодических проверок.  Вместо этого он использует инструмент inotifywait , предназначенный для отслеживания изменений в файловой системе.
В этом сценарии inotifywait отслеживает текущий каталог (.).  Каждый раз, когда файл создается в этом каталоге, inotifywait выдает его имя, и скрипт проверяет, соответствует ли он sleep.txt .  Если это так, он объявляет о создании:
[ -e sleep.txt ] || while IFS= read -r fname
do_
    [ "$fname" = sleep.txt ] && break
done < <(inotifywait -m -q -e create -e moved_to --format %f .)
echo "Finally, sleep.txt now exists!!!"
Подробнее
Опции, используемые для inotifywait имеют следующие значения:
-m означает следить за каталогом.  Другими словами, не останавливайтесь в первый раз, когда что-то происходит, о чем стоит рассказать.
 
-q означает быть спокойнее, чем обычно.
 
-e create -e moved_to означает только отчет о файле, созданном или перемещенном в этот каталог.  
 
--format %f говорит ему печатать имя файла каждый раз, когда происходит событие создания файла
 
. говорит, что каталог для мониторинга.  Период . , всегда означает текущий каталог.
 
Установка inotifywait
В Debian-подобных системах inotifywait является частью inotify-tools и может быть установлен через:
apt-get install inotify-tools
MS Windows и OSX
inotifywait доступен для систем Linux, а также работает под управлением Cygwin.  
Чтобы прочитать о похожих инструментах для Windows, нажмите здесь.
Для получения информации о похожих инструментах для Mac OSX, нажмите здесь.