当在进程bash的输出中找到某个字符串时,触发一个操作



我正在使用gphoto2监控摄像机生成的事件。

输出示例如下:

UNKNOWN PTP Event 400c, Param1 00010001
UNKNOWN PTP Event 400c, Param1 00010001
UNKNOWN PTP Event 400c, Param1 00010001
UNKNOWN PTP Event 2919, Param1 00000000
UNKNOWN PTP Event 400c, Param1 00010001
UNKNOWN PTP Event 400c, Param1 00010001
UNKNOWN PTP Event 2919, Param1 00000000
UNKNOWN PTP Event 400c, Param1 00010001

作为拍摄新照片时的"事件400c"(现在从试用中知道了一个错误),当在输出中找到这样的字符串时,我想运行一个脚本(下载图像文件并继续我的过程),同时让监视器为未来的事件运行。

感谢

tail -f data_file | while read l
  do 
   if [[ "$l" == *"Event 400c"* ]] 
   then 
        echo do something; 
   fi
done

当然,您需要将echo命令替换为命令

将其管道传输到grep,然后将输入字符串管道传输到脚本

输入流:

$ cat temp
UNKNOWN PTP Event 400c,  Param1 00010001
UNKNOWN PTP Event 2919,  Param1 00000000
UNKNOWN PTP Event 400c,  Param1 00010001
UNKNOWN PTP Event 400c,  Param1 00010001
UNKNOWN PTP Event 2919,  Param1 00000000
UNKNOWN PTP Event 400c,  Param1 00010001

一些处理数据的脚本:

$ cat temp.py
#! /usr/bin/python
import sys
for line in sys.stdin:
    print "Input matching:", line, 

管道:

$ tail -f temp | grep 400c | python temp.py
Input matching: UNKNOWN PTP Event 400c,  Param1 00010001
Input matching: UNKNOWN PTP Event 400c,  Param1 00010001
Input matching: UNKNOWN PTP Event 400c,  Param1 00010001
Input matching: UNKNOWN PTP Event 400c,  Param1 00010001

相关内容

最新更新