Respuestas:
Esa es una característica del for
comando compuesto, como se describe en help for
:
for: for NAME [in WORDS ... ] ; do COMMANDS; done
Ejecute comandos para cada miembro en una lista.
El
for
bucle 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
,NAME
se establece en ese elemento yCOMMANDS
se 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 $1
través $4
).
set a b c d
en algún momento recientemente. A menudo usoset
de esa manera en una secuencia de comandos para probar .. Después de reiniciar el terminal, se ha detenido ... (tiene sentido ahora) ..