Мой друг, известный своим бесчеловечным отношением к машинам, хотел подчеркнуть нагрузку на их процессор и поэтому написал одну строчку:
for z in {1..100000000};do num1=$(($z * $z)) && echo $num1;done
При выполнении этот цикл просто не выводится, а быстрый взгляд top
показывает, что bash потребляет огромные объемы памяти (гигабайты через несколько минут).
Как написано, я ожидаю, что этот процесс будет выполняться последовательно - например, передать переменную z
, вычислить ее, повторить результат, повторить.
Вместо этого, попытка сделать это с меньшими верхними границами заставляет все выглядеть так, как будто все рассчитывается заранее, а затем массово выводится на экран. Как в, он сидит на мгновение, делая вычисления, а затем делает echo
все сразу.
Почему этот цикл ведет себя так?