words=($(grep '^\w\w\w\w\w$' /usr/share/dict/words | tr '[a-z]' '[A-Z]')) actual=${words[$[$RANDOM % ${#words[@]}]]} end=false guess_count=0 max_guess=6 if [[ $1 == "unlimit" ]]; then max_guess=999999 fi while [[ $end != true ]]; do guess_count=$(( $guess_count + 1 )) if [[ $guess_count -le $max_guess ]]; then echo "Enter your guess ($guess_count / $max_guess):" read guess guess=$(echo $guess | tr '[a-z]' '[A-Z]') if [[ " ${words[*]^^} " =~ " $guess " ]]; then if [[ $actual == $guess ]]; then echo "You guessed right!" output="" for ((i = 0; i < ${#actual}; i++)); do output+="\033[30;102m ${guess:$i:1} \033[0m" done printf "$output\n" end=true else output="" for ((i = 0; i < ${#actual}; i++)); do if [[ "${actual:$i:1}" != "${guess:$i:1}" ]]; then if [[ "$actual" == *"${guess:$i:1}"* ]]; then output+="\033[30;103m ${guess:$i:1} \033[0m" else output+="\033[30;107m ${guess:$i:1} \033[0m" fi else output+="\033[30;102m ${guess:$i:1} \033[0m" fi done printf "$output\n" fi else echo "Please enter a valid word with 5 letters!"; guess_count=$(( $guess_count - 1 )) fi else echo "You lose! The word is:" echo $actual end=true fi done