如果在脚本输出中发现新行,则执行命令

Execute a command if new line is found in script output

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

我基本上想全天候 24/7 监视调试日志并监听新行。如果有一个新行,我希望它执行一个命令。

logcat | grep com.amazon.firelauncher/.Launcher

当我 运行 这段代码时,我得到了实时调试 window,我想在该命令中弹出新行时执行命令(例如重新启动)。

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

您应该可以使用 read 来做到这一点:

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

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

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