Recentemente, eu estava olhando para um código que me confundiu porque funciona e eu não esperava. O código se reduz a este exemplo
#!/bin/bash
for var;
do
echo "$var"
done
Quando executado com argumentos de linha de comando, os imprime
$ ./test a b c
a
b
c
É isso, que é (para mim) inesperado. Por que isso não resulta em erro porque var
é indefinido? O uso desta "boa prática" é considerado?
fonte
Esse é o comportamento padrão, sim. Ele está documentado no
help
dafor
palavra-chave:Então, quando você não dar-lhe uma lista para repetir, ele será o padrão para a iteração sobre
$@
o conjunto de parâmetros de posição (a
,b
ec
no seu exemplo).E esse comportamento é definido pelo POSIX, portanto, sim, é considerado "boa prática" até o momento.
fonte