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