El Fri, 26 Mar 2010 22:29:00 +0100, Carlos E. R. escribió:
El 2010-03-26 a las 11:08 -0000, Camaleón escribió:
*** #!/bin/sh for((i=0;i<100;i++)) do echo $i done ***
¡Ostrás! ¿Tan facil? ¿Desde cuando se puede hacer así, eso es desde siempre?
:-?? Hum... yo lo he leído en el manual: 3.2.4.1 Looping Constructs http://www.gnu.org/software/bash/manual/bashref.html#Looping-Constructs Lo he ejecutado, he visto que funcionaba y... bueno, pensaba que era así (la verdad es que en javascript se usa esa misma estructura para el "for", por eso no me ha extrañado).
No me lo sabía, yo usaba esto:
for X in `seq 1 100`; do echo $X done
que es estructuralmente parecida a esta:
for FILES in filename1 filename2 filename3 do gzip $FILES done }
La tuya se ejecuta más rápido, me la quedo ;-)
X-)
Por cierto, no uses "#!/bin/sh", usa "#!/bin/bash", a no ser que sepas que es una construcción universal.
Eso era por una exigencia de koxkorrita. Ha especificado que era, y cito textualmente "en un script de shell (/bin/sh)". Soy inocente, señoría OO:-)
Hay algunas distros que han pensado o han cambiado la shell por defecto, a otra más liviana que el bash, precisamente para acelerar el arranque (es la discusión previa a lo del upstart ese), y se encontraron con el problema de que algunos scripts "oficiales" no funcionaban. Tenían que, o bien especificar bash, o cambiar el script para que fuera con la nueva shell (y son scripts que a veces vienen de "upstream", lo que añade una cosa más a mantener en cada distro).
Así que es mejor especificarla. Si alguien luego quiere usar el script con otra shell, que lo cambie.
Es que me sospecho que esa construcción "for" es específica del bash, y es posible que hasta sea relativamente reciente.
Oído cocina, "bash" pues :-) Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org