2017-07-17 77 views
0

我有一个尾部日志文件的脚本,然后上传该行。我想有它只要第一行被读取退出:从尾部退出while循环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 
+0

退出:我的剧本稍加修改的版本(我没有最终需要回声到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 

这个答案帮助呢?或者当第一个数据上传? – MrJLP

+0

第一行通过卷曲被读取并发送。 –

+0

如果读取的第一行与第三个参数传递的内容不匹配,该怎么办? – MrJLP

回答

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