for
loops loop nos parâmetros posicionais se nenhuma in value1 value2...
parte for especificada em todos os shells tipo Bourne.
Esse já era o caso no shell Bourne do final dos anos 70, embora no shell Bourne você precise omitir isso ;
(você também pode usá-lo for i do
(exceto em algumas versões antigas do ash em que você precisa de uma nova linha antes do do
)).
Consulte Qual é o objetivo da palavra-chave "do" no Bash para loops? para mais informações, incluindo variantes mais surpreendentes .
Fazendo:
for i
do
something with "$i"
done
é uma boa prática. É um pouco mais portátil / confiável do que o equivalente em geral:
for i in "$@"; do
something with "$i"
done
para o qual o shell Bourne, o ksh88 tem alguns problemas sob algumas condições (como quando $#
é 0 em algumas versões do shell Bourne (que em ${1+"$@"}
vez de "$@"
podem contornar) ou quando $IFS
não contém o caractere de espaço no Bourne e no ksh88), ou quando a nounset
opção está ativada e $#
é 0 em algumas versões de alguns shells, incluindo bash
( novamente com ${1+"$@"}
uma solução alternativa ).