Je regardais récemment un code qui m'a dérouté parce qu'il fonctionne et je ne m'y attendais pas. Le code se réduit à cet exemple
#!/bin/bash
for var;
do
echo "$var"
done
Lorsqu'il est exécuté avec des arguments de ligne de commande, il les imprime
$ ./test a b c
a
b
c
C'est cela, qui est (pour moi) inattendu. Pourquoi cela ne génère-t-il pas une erreur car il var
n'est pas défini? Cette pratique est-elle considérée comme une «bonne pratique»?
la source
C'est le comportement par défaut, oui. Il est documenté dans le
help
dufor
mot - clé:Ainsi, lorsque vous ne lui donnez pas de liste pour itérer, il sera par défaut itéré sur
$@
, le tableau de paramètres positionnels (a
,b
etc
dans votre exemple).Et ce comportement est défini par POSIX donc oui, il est considéré comme une "bonne pratique" dans la mesure où cela va.
la source