Inicie o emulador em segundo plano, enviando toda a sua saída para um arquivo temporário
emulator -no-boot-anim -avd Andreud &>/tmp/emulator-output &
Depois pegue o PID do processo lançado recentemente e armazene-o em uma variável chamada EMULATORPID
EMULATORPID=$!
Em seguida, enquanto o emulador ainda está em execução, observe o arquivo de saída do erro e, quando ele for encontrado, mate o processo por PID:
while ps -p$EMULATORPID ; do
grep "Emulator ERROR" /tmp/emulator-output && kill $EMULATORPID
done
Para satisfazer o requisito adicional de encerrar o loop while após cinco segundos, você pode definir um contador, incrementá-lo em cada loop e adicionar um atraso de uma seção a cada iteração da seguinte forma:
CTR=0
while ps -p$EMULATORPID && [ $CTR -lt 5 ] ; do
grep "Emulator ERROR" /tmp/emulator-output && kill $EMULATORPID
sleep 1s;
CTR=$[CTR+1]
done