fix(user/bkdatev):Make compatible with Bash 3.2.57
[BK-2020-03.git] / unitproc / bkshuf
index 8aaac9d30368cba6370e519e0be596e836fee1c6..d2d0763ebbeea7f9aa40061fe673f1ba372252b2 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/env bash
 # Desc: Mixes input lines while also preserving some neighbors
 # Usage: cat file | bkshuf arg1
 #!/usr/bin/env bash
 # Desc: Mixes input lines while also preserving some neighbors
 # Usage: cat file | bkshuf arg1
-# Version 0.1.0
+# Version 0.1.2
 # Depends: bc 1.07.1, GNU Coreutils 8.32 (shuf)
 # Input: var: arg1  initial lines to output
 
 # Depends: bc 1.07.1, GNU Coreutils 8.32 (shuf)
 # Input: var: arg1  initial lines to output
 
@@ -124,7 +124,12 @@ main() {
     else
         lc_out_max="$1"; # output line count
     fi;
     else
         lc_out_max="$1"; # output line count
     fi;
-    
+
+    # Check env vars
+    if ! checkInt "$BKSHUF_PARAM_LINEC"; then
+        die "FATAL:Not an int:BKSHUF_PARAM_LINEC:$BKSHUF_PARAM_LINEC"; fi;
+    if ! checkInt "$BKSHUF_PARAM_GSIZE"; then
+        die "FATAL:Not an int:BKSHUF_PARAM_LINEC:$BKSHUF_PARAM_GSIZE"; fi;
     
     # store input lines from stdin (like `shuf`)
     while read -r line; do
     
     # store input lines from stdin (like `shuf`)
     while read -r line; do
@@ -156,6 +161,7 @@ main() {
     lc_out="0"; # init output line counter
     if [[ -z "$lc_out_max" ]]; then lc_out_max="$lco"; fi;    
     ip="$(shuf -i0-$(( lco - 1 )) -n1)"; # init input index pointer
     lc_out="0"; # init output line counter
     if [[ -z "$lc_out_max" ]]; then lc_out_max="$lco"; fi;    
     ip="$(shuf -i0-$(( lco - 1 )) -n1)"; # init input index pointer
+    RANDOM="$(shuf -i0-32767 -n1)"; # init Bash PRNG
     n_loop1="0";
     #yell "DEBUG:max_blanks:$max_blanks"
     while [[ $lcr -ge 1 ]] && [[ $lc_out -lt $lc_out_max ]]; do
     n_loop1="0";
     #yell "DEBUG:max_blanks:$max_blanks"
     while [[ $lcr -ge 1 ]] && [[ $lc_out -lt $lc_out_max ]]; do