Respuestas:
Esa es una característica del forcomando compuesto, como se describe en help for:
for: for NAME [in WORDS ... ] ; do COMMANDS; doneEjecute comandos para cada miembro en una lista.
El
forbucle ejecuta una secuencia de comandos para cada miembro en una lista de elementos. Siin WORDS ...;no está presente, entoncesin "$@"se supone. Para cada elemento enWORDS,NAMEse establece en ese elemento yCOMMANDSse ejecutan.
Por lo tanto, el código que citó probablemente se ejecuta en un script que se llamó con 4 parámetros.
for x; do …es un atajo para for x in "$@"; do …: itera sobre los parámetros posicionales. Si se repite cuatro veces, significa que tiene cuatro parámetros posicionales (a $1través $4).
set a b c den algún momento recientemente. A menudo usosetde esa manera en una secuencia de comandos para probar .. Después de reiniciar el terminal, se ha detenido ... (tiene sentido ahora) ..