Risposte:
Questa è una caratteristica del forcomando composto, come descritto da help for:
for: for NAME [in WORDS ... ] ; do COMMANDS; doneEseguire comandi per ciascun membro in un elenco.
Il
forciclo esegue una sequenza di comandi per ciascun membro in un elenco di elementi. Sein WORDS ...;non è presente,in "$@"si assume. Per ogni elemento inWORDS,NAMEviene impostato su quell'elemento eCOMMANDSvengono eseguiti.
Quindi il codice che hai citato viene probabilmente eseguito in uno script che è stato chiamato con 4 parametri.
for x; do …è una scorciatoia per for x in "$@"; do …: scorre i parametri posizionali. Se esegue quattro cicli, significa che hai quattro parametri posizionali ( $1attraverso $4).
set a b c dda qualche tempo di recente. Lo uso spessosetin uno script per i test. Dopo aver riavviato il terminale, si è fermato ... (ha senso ora) ..