如何打破管道消费者的读取循环

如何打破管道消费者的读取循环

我有这个迷你脚本:

#!/usr/bin/env bash


do_tests(){
  # todo
}


go run . | (
    while read line; do
      if [[ "$line" == "listening" ]]; then
        do_tests  # run this once!
        break;
      fi
    done
)

我想要做的是翻转一个布尔值,这样如果有多个匹配行,我运行测试的次数就不会超过 1 倍。

这是我能想到的唯一方法:

go run . | (

    while read line; do
      if [[ "$line" == "listening" ]]; then
        do_tests 
        break;
      fi
    done

    cat # run cat here
)

还有别的办法吗?

相关内容