Lorsque if [ ... ]
vous utilisez, vous utilisez réellement l' [
utilitaire (qui est le même que test
mais requiert que le dernier argument soit ]
).
[
ne comprend pas pour exécuter votre fonction, il attend des chaînes. Heureusement, vous n'avez pas besoin d'utiliser [
du tout ici (pour la fonction au moins):
if [ "$docheck" -eq 1 ] && notContainsElement "$fruit" "${blacklist[@]}"; then
...
fi
Notez que je vérifie également d'abord l'entier, afin que nous puissions éviter d'appeler la fonction du tout si ce $docheck
n'est pas 1.
Cela fonctionne car if
prend une commande arbitraire et décide quoi faire à partir du statut de sortie de cette commande. Ici, nous utilisons un [ ... ]
test avec un appel à votre fonction, avec &&
entre les deux, la création d'une commande composée. L'état de sortie de la commande composée serait vrai si à la fois le [ ... ]
test et la fonction renvoyaient zéro comme état de sortie, signalant le succès.
Comme une note de style, je n'aurais pas le test de fonctionnement si le tableau ne pas contenir l'élément , mais que si ne contient l'élément, puis
if [ "$docheck" -eq 1 ] && ! contains "$fruit" "${blacklist[@]}"; then ...
Avoir un test de fonctionnement un désordre négatif volonté de la logique dans le cas où vous ne voulez tester si le tableau contient l'élément ( if ! notContainsElement ...
).