Каждый sleep является дочерним процессом для запущенного терминала, нажимая ^Z ты на самом деле останавливаешь только один из sleep'ов, текущий на момент нажатия клавиш (но не останавливаешь родительский процесс, где последовательно выполняются команды) соответственно возвращаясь к нему конкретно этот sleep тут же завершается. Можешь лично в этом убедиться с помощью команды watch -n 1 "ps ax | grep sleep" в соседнем терминале.
Для того чтобы это дело корректно работало, тебе нужно запускать все твои инструкции как отдельный процесс и этот самый процесс уже останавливать, смотри как пример:
echo 'for i in {1..10000}; do echo $i;sleep 1;done' | bash