#! /bin/bash clear COLUMNS=$(tput cols); LINES=$(tput lines) declare -i PERIOD=${1:-COLUMNS} for ((x=0; ; x=(x+1)%$COLUMNS)); do y=$(bc -l <<-EOF p=4*a(1) y = 0.5 * $LINES * (1 - s(2*p*($x-1)/$PERIOD)) scale=0 y/1 EOF ) read -rn 1 || break tput cup $y $x echo -n "$REPLY" done tput cup $LINES 0