Tenir compte du code:ksh errexit sur l'exécution conditionnelle
set -ex
for a in 1 2 3; do
[ $a == 1 ] || false
done
Le résultat attendu est:
+ [ 1 == 1 ]
+ [ 2 == 1 ]
+ false
Cependant je reçois:
+ [ 1 == 1 ]
+ [ 2 == 1 ]
+ false
+ [ 3 == 1 ]
+ false
Pour certains ksh raison décide de ne pas quitter après le false
à la deuxième itération.
L'exécution de ce script via bash fournit les résultats attendus.
Chose intéressante, je peux convaincre ksh de fournir les résultats escomptés en modifiant le code:
set -ex
for a in 1 2 3; do
[ $a == 1 ] || false
true
done
qui, à la surface, tout ce que je fais est d'ajouter une commande true
qui est censé faire efficacement rien .
Ma version ksh (par défaut sur OpenBSD 6.0) est: @(#)PD KSH v5.2.14 99/07/13.2
Je voulais vous assurer qu'il n'y a pas quelque chose que je suis absent avant que je décide de faire un rapport de bug.
Bien que ce lien peut répondre à la question, il est préférable d'inclure les éléments essentiels de la réponse ici et de fournir le lien de référence. Les réponses à lien uniquement peuvent devenir invalides si la page liée change. – Marusyk
Très peu probable car le premier est une archive de listes de diffusion et le second est le journal officiel de code source: ^) Néanmoins, merci pour l'information - je garderai cela à l'esprit. – rjc