#!/bin/bash s=${1:-0.005} t=${2:-0.010} while :; do a=; (( n++ )) while { IFS= read -r -d '' -t $t x; r=$?; (( r == 0 || r > 128 )); }; do a+=$x echo "x: $x (${#x})" done < <(for i in {a..z}; do echo -n $i; sleep $s; done; echo -ne '\0') echo -e "a: $a (${#a})\n" [[ ${#a} < 26 ]] && break done for i in {a..z}; do [[ $a == *$i* ]] || m+=$i done echo "missed $m (${#m}); failed after $n iterations"