Eu não entendo muito bem como você quer que seu script funcione. Eu reescrevi um pouco: imprima todos os argumentos da linha de comando, cada letra em uma cor aleatória:
#!/bin/bash
# [black]=30
# [red]=31
# [green]=32
# [yellow]=33
# [blue]=34
# [magenta]=35
# [cyan]=36
# [white]=37
function random_colour {
local bold=$(( $RANDOM % 2 ))
local code=$(( 30 + $RANDOM % 8 ))
printf "%d;%d\n" $bold $code
}
sentence="$*"
for (( i=0; i<${#sentence}; i++ )); do
printf "\e[%sm%c" "$(random_colour)" "${sentence:i:1}"
done
echo -e '\e[0m'