#!/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;
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