在 OSX 上节流管道命令?

在 OSX 上节流管道命令?

我想限制输出,grep最多每 X 秒运行一次。具体来说,我想做这样的事情:

ping 8.8.8.8 | grep "No route to host" | throttle 3s | xargs -I % sh -c 'reset wifi'

答案1

根据以下情况回答我自己的问题这个问题,但针对 OSX 略有改变:

epoch () { date -v+$* "+%s" }

interval () {
    INTERVAL="$*"
    WHEN_TO_RUN=0
    while read LINE; do
        if (( $(epoch 0S) >= $WHEN_TO_RUN )) then
            echo $LINE
            WHEN_TO_RUN="$(epoch $INTERVAL)"
        fi
    done
}

这使得... | interval 3S

相关内容