On voit bien que le résultat n’est pas bon. Car je devrait normalement avoir OK vu que le test -z est vrai si la longueur de la chaîne est égale à zéro et que dans la vérification précédente on obtient bien la ligne (avec le pattern en surbrillance).
Pour éviter ce genre de confusion, il faut éliminer les variables superflues.
Le problème n’est pas une histoire de guillemet mais de tiret.
Une variable qui commence par « - » sera interprétée par grep comme une option qui n’existe pas, donc résultat de grep obligatoirement négatif.
Il suffit d’utiliser « -- » en fin d’argument de grep pour séparer les options des arguments, ou utiliser '\-’ au lieu de ‹ - › dans la variable de recherche.
Illustration:
ligne="-a always,exit etc... etc..."
prm="-a always,exit"
grep "$prm" <<<"$ligne"
--> grep : option invalide -- ' '
# test correct
grep -q -- "$prm" <<<"$ligne" && echo NOK || echo OK
NOK