簡體   English   中英

並行讀取循環時

[英]While read loop in parallel

我在bash腳本中有以下while循環,但是我想並行運行它們(失敗),有人可以指出我的正確方向嗎?

謝謝!

while read LINE; do
    RAYID=$(echo "$LINE" | jq -r .rayId)
    LINE="$(echo $LINE | sed 's/\([[:digit:]]\{13\}\)[[:digit:]]\{6\}/\1/g')"
    args=( -XPUT "localhost:9200/els/logs/$RAYID?pipeline=geoip-els" -H "Content-Type: application/json" -d "$LINE" )
    curl "${args[@]}" > /dev/null 2>&1
done <<< "$ELS_LOGS"

**編輯

除了@TomFenech所說的是正確的內容外,我還要補充一點,如果您在done之后添加wait ,那也很好,因此腳本不會完成其執行,直到所有任務都完成為止。

function doSomething(){

        RAYID=$(echo "$1" | jq -r .rayId  ) 
        LINE="$(echo $1 | sed 's/\([[:digit:]]\{13\}\)[[:digit:]]\{6\}/\1/g'  )" 
        args=( -XPUT "localhost:9200/els/logs/$RAYID?pipeline=geoip-els" -H "Content-Type: application/json" -d "$1"  ) 
        curl "${args[@]}" > /dev/null 2>&1 
}

while read LINE; do
   doSomething $LINE &
done <<< "$ELS_LOGS"
wait

問候!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM