从尾部循环while bash脚本

时间:2017-07-17 22:35:29

标签: bash

我有一个脚本,用于记录日志文件,然后上传该行。我想在第一行读出后立即退出:

#!/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

2 个答案:

答案 0 :(得分:1)

如果您想在上传第一行后立即退出,只需添加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

答案 1 :(得分:0)

问题是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