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

Easy :p
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.
Mil gracias!!!
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