Respostas:
Esse é um recurso do for
comando composto, conforme descrito por help for
:
for: for NAME [in WORDS ... ] ; do COMMANDS; done
Execute comandos para cada membro em uma lista.
O
for
loop executa uma sequência de comandos para cada membro em uma lista de itens. Sein WORDS ...;
não estiver presente,in "$@"
será assumido. Para cada elemento emWORDS
,NAME
é definido para esse elemento e osCOMMANDS
são executados.
Portanto, o código que você citou provavelmente é executado em um script chamado com 4 parâmetros.
for x; do …
é um atalho para for x in "$@"; do …
: itera sobre os parâmetros posicionais. Se executar um loop quatro vezes, significa que você tem quatro parâmetros posicionais ( $1
a $4
).
set a b c d
em algum momento recentemente. Costumo usarset
dessa maneira em um script para testar .. Depois de reiniciar o terminal, ele parou ... (faz sentido agora) ..