Como descrito aqui , o operador de intervalo constrói o intervalo (cria uma matriz de números inteiros) antes de permitir que você faça coisas como iterar sobre ele. Você pode estar melhor com um loop while:
z=1 ; while [[ $z -le 100000000 ]] ; do num1=$(($z * $z)) && echo $num1 ; z=$(($z + 1)) ; done
(Embora seja improvável que isso realmente force a CPU, pois o eco causa algum alívio. Meu próprio sistema atinge apenas cerca de 30% de utilização ao executar isso.)