#!/bin/bash
cowsaidfile="$(mktemp)"
printf "Writing cows to temporary file \"%s\"\\n" \
	"$cowsaidfile"
cowsay "E T E R N A L" > "$cowsaidfile"
trap_exit() {
	# kill "$cowthreadpid" > /dev/null 2>&1
	wait "$cowthreadpid"
	printf "\\n"
	cat "$cowsaidfile"
	rm "$cowsaidfile"
}
trap trap_exit EXIT
# Cow writing thread
(
while true; do
	# Shut up shellcheck; that's the whole point. cowsay does a full read
	# before it writes back to the file anyway.
	# shellcheck disable=2094
	cowsay -n < "$cowsaidfile" 1<> "$cowsaidfile"
done
) &
cowthreadpid=$!
while true; do
	# This line will only ever grow larger, so we don't need to clear it
	# before overwriting it.
	printf "\\r%s bytes of cowsay; hit Ctrl+C to dump them" \
		"$(stat --printf="%s" "$cowsaidfile")"
	sleep 0.02
done