Respostas:
Esse é um recurso do forcomando composto, conforme descrito por help for:
for: for NAME [in WORDS ... ] ; do COMMANDS; doneExecute comandos para cada membro em uma lista.
O
forloop 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 osCOMMANDSsã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 ( $1a $4).
set a b c dem algum momento recentemente. Costumo usarsetdessa maneira em um script para testar .. Depois de reiniciar o terminal, ele parou ... (faz sentido agora) ..