From: Steven Baltakatei Sandoval Date: Tue, 20 Feb 2024 21:40:00 +0000 (+0000) Subject: feat(unitproc/bkshuf):Exit early if stdout not being read X-Git-Url: https://zdv2.bktei.com/gitweb/BK-2020-03.git/commitdiff_plain/2ddc75a555b0be46a3b4f94b5e9a8e44aa960c83?ds=sidebyside;hp=-c feat(unitproc/bkshuf):Exit early if stdout not being read --- 2ddc75a555b0be46a3b4f94b5e9a8e44aa960c83 diff --git a/unitproc/bkshuf b/unitproc/bkshuf index d2d0763..ff80d8e 100644 --- a/unitproc/bkshuf +++ b/unitproc/bkshuf @@ -1,10 +1,12 @@ #!/usr/bin/env bash # Desc: Mixes input lines while also preserving some neighbors # Usage: cat file | bkshuf arg1 -# Version 0.1.2 +# Version 0.2.0 # Depends: bc 1.07.1, GNU Coreutils 8.32 (shuf) # Input: var: arg1 initial lines to output +trap 'exit;' SIGPIPE; # exit early if stdout not being read + # Load env vars ## For these numbers of lines of input... if [[ ! -v BKSHUF_PARAM_LINEC ]]; then BKSHUF_PARAM_LINEC=1000000; fi; @@ -88,7 +90,8 @@ consume_line() { line="${list_input[$ip]}"; if [[ -n $line ]]; then ##### consume line at index ip - printf "%s\n" "$line" & # print to output + printf "%s\n" "$line"; # print to output + unset "list_input[$ip]"; # destroy line in list_input array ((lc_out++)); ((lcr--)); # decrement line count remaining lcr