如何尾随adb logcat的输出并在每一行执行命令

时间:2019-10-19 19:58:32

标签: linux bash adb logcat

我正在尝试做this post,但是我不想从文件中读取,而是要“订阅” 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 个答案:

答案 0 :(得分:2)

以下两个解决方案应该起作用。我通常更喜欢第二种形式,因为wile循环在当前进程中运行,因此我可以使用局部变量。第一种形式在子进程中运行while循环。

在子进程中循环时:

#!/bin/bash

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

当前进程中的循环:

#!/bin/bash

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