[: =: opérateur unaire attendu [duplicate]

Cette question a déjà des réponses ici :

Answer

Dans vos tests, si la commande substitution $(adb -s ...) génère une chaîne de plusieurs mots, le shell la traitera comme une erreur de syntaxe. Vous devrez citer les extensions:

[ "$(adb -s ...)" = *"Is the system running?"* ] 

Le résultat dune substitution de commande sans guillemets subira un fractionnement et une extension de nom de fichier tout comme le fait un développement de variable sans guillemets. Citant lexpansion évite cela. Dans votre cas, cest le fractionnement qui cause des problèmes.

Avec la substitution de commande étendue, le test peut ressembler à quelque chose comme

if [ word1 word2 word3 = *"some string"* ] 

Il sagit clairement dune erreur de syntaxe.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *