繁体   English   中英

从尾部退出while循环bash脚本

[英]Exiting while loop bash script from tail

我有一个脚本,它尾随日志文件,然后上载该行。 阅读第一行后,我希望它退出:

#!/bin/bash

tail -n0 -F "$1" | while read LINE; do
  (echo "$LINE" | grep -e "$3") && curl -X POST --silent --data-urlencode \
    "payload={\"text\": \"$(echo $LINE | sed "s/\"/'/g")\"}" "$2";
done

如果您要在第一行上载后立即退出,可以添加一个break

#!/bin/bash

tail -n0 -F "$1" | while read LINE; do
  (echo "$LINE" | grep -e "$3") && curl -X POST --silent --data-urlencode \
    "payload={\"text\": \"$(echo $LINE | sed "s/\"/'/g")\"}" "$2" && break;
done

问题是tail命令没有被杀死。 我的脚本的稍作修改(我最终并不需要回显到stdout)

#!/bin/bash

tail -n0 -F "$1" | while read LINE; do
    curl -X POST --data-urlencode "payload={\"text\": \"$(echo $LINE | sed "s/\"/'/g")\"}" "$2" && pkill -P $$ tail
done

这个答案也有帮助: https : //superuser.com/questions/270529/monitoring-a-file-until-a-string-is-found

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM