Este team de expertos luego de ciertos días de trabajo y de recopilar de información, han obtenido los datos necesarios, esperamos que te sea útil en tu trabajo.
Solución:
Sí, eso se debe a que la expansión de llaves ocurre antes que la expansión de parámetros. O usa otro shell como zsh
o ksh93
o use una sintaxis alternativa:
Sintaxis sh estándar (POSIX)
i=1
while [ "$i" -le "$number" ]; do
echo "$i"
i=$(($i + 1))
done
estilo Ksh for ((...))
for ((i=1;i<=number;i++)); do
echo "$i"
done
utilizar eval
(no recomendado)
eval '
for i in 1..'"$number"'; do
echo "$i"
done
'
utiliza el GNU seq
comando en los sistemas donde está disponible
unset -v IFS # restore IFS to default
for i in $(seq "$number"); do
echo "$i"
done
(ese es menos eficiente ya que se bifurca y ejecuta un nuevo comando y el shell tiene que leer su salida de una tubería).
Evite los bucles en las conchas.
El uso de bucles en un script de shell a menudo es una indicación de que no lo está haciendo bien.
Lo más probable es que su código se pueda escribir de otra manera.
Ni siquiera necesita un bucle for para esto, solo use el seq
mando:
$ seq 100
Ejemplo
Aquí están los primeros 10 números que se están imprimiendo:
$ seq 100 | head -10
1
2
3
4
5
6
7
8
9
10
Puedes usar lo siguiente:
for (( num=1; num <= 100; num++ ))
do
echo $num
done