Esta pergunta já tem respostas aqui :
Resposta
Em seus testes, se a substituição do comando $(adb -s ...)
gera uma string com várias palavras, o shell irá tratá-la como um erro de sintaxe. Você terá que citar as expansões:
[ "$(adb -s ...)" = *"Is the system running?"* ]
O resultado de uma substituição de comando sem aspas sofrerá divisão e globbing de nome de arquivo da mesma forma que uma expansão de variável sem aspas. Citar a expansão evita isso. No seu caso, é a divisão que causa problemas.
Com a substituição do comando expandida, o teste pode ser parecido com
if [ word1 word2 word3 = *"some string"* ]
Este é claramente um erro de sintaxe.