Pourquoi "pour tout text; faire 'boucle quatre fois?

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. Si in WORDS ...; n'est pas présent, alors in "$@" est supposé. Pour chaque élément dans WORDS , NAME est défini sur cet élément et les COMMANDS 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 ).