J'ai hérité d'un script bash (ce n'est pas un héritage merveilleux!) Et j'essaie de comprendre ce qui ne va pas.mauvaise substitution dans un script bash
La ligne incriminée est la suivante: while [ "${\(\#\)}" -gt 0 ] ; do
et je reçois un message d'erreur « mauvaise substitution » lorsque je tente de l'exécuter. Je suis à peu près sûr qu'il essaie de demander si le nombre d'args est supérieur à zéro, mais vous le savez aussi.
Je ne sais pas si cela a déjà fonctionné. J'imagine qu'il n'y a pas assez de barres obliques inverses, ou peut-être trop, ou peut-être que les parenthèses n'appartiennent pas à cet endroit. J'ai essayé plusieurs d'entre eux, mais pas de chance.
Tout éclaircissement apprécié.
J'ai négligé le peu de "pas assez d'antislashs" quand j'ai répondu. Y a-t-il des backslashes dans le script près de la ligne while? Si un script écrit un script dans un autre fichier, il peut utiliser \ $ # pour retarder l'évaluation de $ #. –
lorsqu'il s'agit de code hérité comme ceci toujours supposer que cela a fonctionné à un moment donné. Je vérifierais vos paramètres d'entrée pour la validité. –