如果在脚本输出中发现新行,则执行命令
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
我在编写一个简单的 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