Você pode usar seq
for i in $(seq 1 "$num")
ou o seu shell pode suportar loops estilo C, por exemplo em bash
for ((i=0; i<$num; i++))
Como você faz uma iteração através de um loop n quantidade de vezes em que n é especificado pelo usuário no começo?
Eu escrevi um script de shell e preciso repetir uma parte dele n vezes (dependendo de quantas vezes o usuário deseja).
Meu script até agora é assim:
echo "how many times would you like to print Hello World?"
read num
for i in {1.."$num"}
do
echo "Hello World"
done
Se eu alterar "num" para um número como "5", o loop funciona, mas preciso permitir que o usuário especifique o número de vezes para percorrer o loop.
echo "how many times would you like to run your loop ?"
read max
i=0
while [ "$((i+=1))" -le "$max" ]
do
# whatever you want to do here
done
Usando "Avaliação Aritmética" (bash apenas):
read -p "how many times would you like to print Hello World? " max
i=0
while (( i++ < max ))
do
echo "$i, Hello World."
done
Ou use isso se quiser tornar o programa mais robusto.
Isso extrairá apenas números da entrada. Exceto por um número muito grande que pode levar muito tempo para ser processado, qualquer outra entrada será limpa antes de ser usada.
while (( i++ < ${max//[^0-9]} ))
Ainda outra maneira com {1.."$num"}
. O exapansion do Bash precisa ser avaliado antes que isso possa ser transferido para o loop for. Você pode usar a sintaxe de expansão dessa maneira para que funcione:
for i in $(eval echo {1.."$num"});
do
echo $i;
done
Tags bash loop-device shell-script for