Réponses:
C'est une caractéristique de la forcommande composée, comme décrit par help for:
for: for NAME [in WORDS ... ] ; do COMMANDS; doneExécutez des commandes pour chaque membre d'une liste.
La
forboucle exécute une séquence de commandes pour chaque membre d'une liste d'éléments. Siin WORDS ...;n'est pas présent, alorsin "$@"est supposé. Pour chaque élément deWORDS,NAMEest défini sur cet élément et lesCOMMANDSsont exécutés.
Ainsi, le code que vous avez cité est probablement exécuté dans un script qui a été appelé avec 4 paramètres.
for x; do …est un raccourci pour for x in "$@"; do …: il parcourt les paramètres positionnels. S'il boucle quatre fois, cela signifie que vous avez quatre paramètres de position (à $1travers $4).
set a b c drécemment. J'utilise souventsetcette méthode dans un script pour les tests .. Après le redémarrage du terminal, il s'est arrêté ... (c'est logique maintenant) ..