Est-ce un bug ou une fonctionnalité?
Cela semble se produire pour les caractères alphanumériques non- cités.
Exécution de GNU bash, version 4.1.5
for alpha01234; do echo $((++i)); done
sortie:
1 2 3 4
C'est une caractéristique de la command compound, décrite par help for
:
for: for NAME [in WORDS ... ] ; do COMMANDS; done
Exécuter des commands pour chaque membre d'une list.
La boucle
for
exécute une séquence de commands pour chaque membre dans une list d'éléments. Siin WORDS ...;
n'est pas présent, alorsin "$@"
est supposé. Pour chaque élément dansWORDS
,NAME
est défini sur cet élément et lesCOMMANDS
sont exécutées.
Ainsi, le code que vous avez cité est probablement exécuté dans un script qui a été appelé avec 4 parameters.
for x; do …
for x; do …
est un raccourci pour for x in "$@"; do …
for x in "$@"; do …
: il itère sur les parameters de position. S'il boucle quatre fois, cela signifie que vous avez quatre parameters de position ( $1
$4
).