Problemas al hacer un bucle

Imagen de Sergio1986
0 puntos

Hola,

No tengo mucha experiencia en shell y quizas la pregunta que voy ha exponer es ridicula, pero mi problema es el siguiente:

Tengo este bucle:

i=000
while [ $i -le 010 ]; do
echo $i
i=$(($i+1))
done

y al ejecutarlo me muestra:

000
1
2
3
4
5
6
7
8
9
10

y lo que necesito que me muestre es:

000
001
002
003
004
005
006
007
008
009
010

¿como lo prodia hacer? he estado buscando información pero no encuentro nada al respecto, empiezo a pensar que no se puede hacer... XD

Agradezo todas vuestras respuestas!!!!!

Un abrazo

Imagen de pwned
+1
0
-1

Para lo que quieres hacer necesitas usar una herramienta que permita darle formato al texto impreso, por ejemplo `printf' :

i=000
while [ $i -le 010 ]; do
printf "%03d" $i
i=$(($i+1))
done

Como ves solo cambie tu `echo', para que no te sea dificil reconocer el cambio. Lo que haces así es indicar que lo que imprimas sera un entero %XXd, que guardaras 3 lugares como mínimo para imprimirlo %X3d, y que el espacio que no ocupe el número será rellenado con ceros %03d.

Tambien podrías cambiar el "i=000" por "i=0" y el "010" del if por "10" ya que ceros a la izquierda no cuentan :p. Y diría que para lo que usas el bucle, podrías haber metido un for tipo c, pero eso ya lo investigaras.

+1
0
-1
Imagen de Sergio1986
+1
0
-1

Gracias por tu ejemplo, es mucho más sencillo q la solución que habia encontrado, mira:
i=1
while [ $i -le 999 ]; do
if [ $i -le 9 ]; then i1="00$i"
else if [ $i -le 99 ]; then i1="0$i"
else i1=$i
fi
fi
i=$(($i+1))
done

De nuevo, mil gracias, tu ejemplo simplifica el trabajo.

Un saludo

+1
0
-1