【问题标题】:Execute a command if new line is found in script output如果在脚本输出中找到新行,则执行命令
【发布时间】:2016-01-10 02:05:54
【问题描述】:

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

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

logcat | grep com.amazon.firelauncher/.Launcher

当我运行这段代码时,我会看到一个实时调试窗口,我想在该命令中弹出新行时执行一个命令(例如重新启动)。

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

【问题讨论】:

  • OS X/Linux?如果是 Linux,什么发行版?还是这个 bash 在 Android 手机中运行?
  • 这是在android上运行的bash,带有busybox,所以它具有android的功能。感谢您的帮助。
  • 命令:am monitor | grep firelauncher 效果更好,每当输出:** Activity starting: com.amazon.firelauncher 显示时,我想执行一个命令

标签: android bash shell grep logcat


【解决方案1】:

您应该可以为此使用read:

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

【讨论】:

  • 我爱你,这确实有效!我会尽快为你 +1!
  • 你应该为自己感到骄傲,这实际上是互联网上一个非常大的问题,我看了很多人的尝试,只有你成功了。
【解决方案2】:

这是我的最终答案,但如果不是马丁·科内尼 (Martin Konecny) 的帮助,我不会得出结论,他完成了所有繁重的工作。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-12
    • 2020-08-04
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 2015-06-17
    • 2021-12-29
    相关资源
    最近更新 更多