Dette spørgsmål har allerede svar her :
Svar
I dine tests, hvis kommandosubstitutionen $(adb -s ...)
genererer en streng med flere ord, shell behandler den som en syntaksfejl. Du bliver nødt til at citere udvidelserne:
[ "$(adb -s ...)" = *"Is the system running?"* ]
Resultatet af en ikke-citeret kommandosubstitution vil undergå opdeling og filnavn globbing ligesom en ikke-citeret variabel udvidelse gør. Citering af udvidelsen undgår dette. I dit tilfælde er det splittelsen, der forårsager problemer.
Når kommandosubstitutionen er udvidet, kan testen muligvis se ud som
if [ word1 word2 word3 = *"some string"* ]
Dette er helt klart en syntaksfejl.