2017-07-17 50 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