Recientemente estuve mirando un código que me confundió porque funciona y no esperaba que lo hiciera. El código se reduce a este ejemplo.
#!/bin/bash
for var;
do
echo "$var"
done
Cuando se ejecuta con argumentos de línea de comando se imprime
$ ./test a b c
a
b
c
Es esto, eso es (para mí) inesperado. ¿Por qué esto no produce un error porque var
no está definido? ¿Usar esto se considera una 'buena práctica'?
fuente
Este es el comportamiento predeterminado, sí. Está documentado en
help
lafor
palabra clave:Por lo tanto, cuando usted no lo da una lista para repetir, por defecto lo iteración sobre
$@
el conjunto de parámetros posicionales (a
,b
yc
en su ejemplo).Y POSIX define este comportamiento, por lo que sí, se considera una "buena práctica" en la medida de lo posible.
fuente