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.