Как выполнить вывод из adb logcat и выполнять команду каждую новую строку - PullRequest
0 голосов
/ 19 октября 2019

Я пытаюсь сделать очень вероятно, чтобы это сообщение , но вместо чтения из файла я хочу "подписаться" на вывод adb logcat, и каждый раз, когда регистрируется новая строка, я будузапустите некоторый код в этой строке.

Я пробовал эти коды, но ни один из них не работал

tail -f $(adb logcat) | while read; do 
    echo $read;
    processLine $read;
done

или

adb logcat >> logcat.txt &
tail -f logcat.txt | while read; do 
    echo $read;
    processLine $read;
done

Как проще всего это сделать? Заранее спасибо

1 Ответ

2 голосов
/ 19 октября 2019

Следующие два решения должны работать. Я обычно предпочитаю вторую форму, поскольку цикл wile запускается в текущем процессе, и поэтому я могу использовать локальные переменные. Первая форма запускает цикл while в дочернем процессе.

цикл while в дочернем процессе:

#!/bin/bash

adb logcat |
while read -r line; do
  echo "${line}"
  processLine "${line}"
done

цикл while в текущем процессе:

#!/bin/bash

while read -r line; do
  echo "${line}"
  processLine "${line}"
done < <(adb logcat)
...