
Envoyé par
Gamez29
Oui, je le sais, mauvais copier/coller d'un autre script.
Concernant mon cas, dans la boucle même en prenant directement la variable DESCRIPTION, le problème reste le même.
Quand il passe au niveau de "DS_PENDING_JOB" pas de problème
1 2
|
+ [ DS_PENDING_JOB = fillfactor -o DS_PENDING_JOB = = -o DS_PENDING_JOB = with ] |
Mais quand, on arrive au caractère '(' il l'interprete et dit qu'il y a une erreur de syntaxe.
1 2 3
|
+ [ ( = fillfactor -o ( = = -o ( = with ]
GestionFillFac[16]: fillfactor: unknown test operator |
Etonnant problème. J'ai dû booter mon PC sur ma partition Linux car ça m'intéressait trop pour attendre jusqu'à demain et je pense avoir trouvé la raison et donc un moyen de contourner.
Au début, je pensais que c'était une question de guillemet et aussi de crochet (incompatibilité entre ")" et "]" ?). Mais en mettant
test "${DESC}" = "fillfactor" -o "${DESC}" = "=" -o "${DESC}" = "with" && ...
Ca n'a pas fait mieux.
Ensuite, je me suis demandé sur quel mot il bloquait. J'ai donc tenté
test "${DESC}" = "fillfactor" && ...
test "${DESC}" = "=" && ...
test "${DESC}" = "with" && ...
Et là, chacun des 3 essais a parfaitement fonctionné.
J'en suis venu à la conclusion que c'était l'association de la parenthèse dans la variable et le connecteur "-o" qui chiait au niveau du shell (mais je ne peux pas expliquer pourquoi). J'ai aussi tenté "-a" juste pour voir => idem.
Donc j'ai remplacé par
( test "${DESC}" = "fillfactor" || test "${DESC}" = "=" || test "${DESC}" = "with" ) && ...
Et là, plus de pb.
[EDIT]
Je reviens sur ce post pour rajouter qu'aujourd'hui j'ai fait quelques essais sur cette instruction.
Quand je tape
test "$var" = "(" -o "$var" = "("
Ca chie totalement, que var contienne ")" ou "(". Il se mélange dans les parenthèses.
En revanche, si je tape
test "$var" = ")" -o "$var" = ")"
Là, si "$var" contient "(" plus de problème. Le shell voit
test "(" = ")" -o "(" = ")"
Et question parenthèses il n'est pas géné mais bizarrement, le test est toujours vrai. Et j'en suis arrivé à taper
Et là encore le test est encore vrai. Et là je reste sec...
Partager