如果在脚本输出中找到新行,则执行命令

时间:2016-01-10 02:05:54

标签: android bash shell grep logcat

编写简单的bash脚本时遇到了很大的困难。

我基本上想要全天候监控调试日志并监听新行。如果有新行,我希望它执行命令。

logcat | grep com.amazon.firelauncher/.Launcher

当我运行此代码时,我得到一个实时调试窗口,每当在该命令中弹出一个新行时,我想执行一个命令(重新启动一个例子)。

如何做到这一点?我尝试将输出发送到文件并监视该文件以更改文件大小,但它不起作用。我真的需要帮助!

2 个答案:

答案 0 :(得分:0)

您应该可以使用read

#!/bin/bash
while logcat | grep "com.amazon.firelauncher/.Launcher" | read -r line; do
    echo "Text read from logcat"
    /path/to/executable
done

答案 1 :(得分:0)

这是我的最终答案,但如果不是Martin Konecny的帮助,我就不会得出结论,他做了所有繁重的工作。

#!/bin/bash
am monitor | while read -r line; do
    if [[ $line == *"firelauncher"* ]]
    then
      am start com.newlauncher.launcher
    fi
done