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 varno está definido? ¿Usar esto se considera una 'buena práctica'?
fuente

Este es el comportamiento predeterminado, sí. Está documentado en
helplaforpalabra 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,bycen su ejemplo).Y POSIX define este comportamiento, por lo que sí, se considera una "buena práctica" en la medida de lo posible.
fuente