Preciso escrever um script para testar se um serviço dentro de um emulador Android está pronto para instalação do apk ou não usando este comando
adb -s emulator-5554 shell pm list package | grep package:com.android.
Se o comando não produzir nenhuma dessas substrings na primeira linha, o avd não estará pronto para a instalação do apk
O sistema está funcionando?
Não consigo encontrar o serviço
conectados
Este é o meu roteiro
if [ $(adb -s emulator-5554 shell pm list package | grep package:com.android. | head -n 1) = *"Is the system running?"* ] ||
[ $(adb -s emulator-5554 shell pm list package | grep package:com.android. | head -n 1) = *"Can't find service"* ] ||
[ $(adb -s emulator-5554 shell pm list package | grep package:com.android. | head -n 1) = *"online"* ] ; then
echo "could not find package service"
else
echo "found package service"
fi
mas eu recebo esse erro
./script.sh: line 4: [: =: unary operator expected
./script.sh: line 5: [: =: unary operator expected
./script.sh: line 6: [: =: unary operator expected
Em seus testes, se a substituição do comando
$(adb -s ...)
gerar uma string com várias palavras, o shell irá tratá-la como um erro de sintaxe. Você terá que citar as expansões:O resultado de uma substituição de comando sem aspas sofrerá divisão e globbing de nome de arquivo, assim como 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 de comando expandida, o teste pode ser algo como
Este é claramente um erro de sintaxe.