Eis uma solução pura bash :
string='foo bar base'
for ((i=0; i<=${#string}; i++)); do
printf '%s' "${string:$i:1}"
sleep 0.$(( (RANDOM % 5) + 1 ))
done
-
${#variable}
é o tamanho da string -
printf
pode substituirecho
para exibir saída de sequência e formato: -
%s
diz paraprintf
para exibir uma string sem nova linha\n
-
${string:$i:1}
é uma bash [expansão de parâmetro] 1 para exibir apenas uma letra específica da string -
$(( ))
é alguma bash aritmética -
$(( ( RANDOM % 5 ) + 1 ))
exibe um inteiro: 1 a 5 RANDOMly
Bônus
Esta é uma função para usar com um argumento:
matrix(){
tput setaf 2 &>/dev/null # green powaaa
for ((i=0; i<=${#1}; i++)); do
printf '%s' "${1:$i:1}"
sleep 0.$(( (RANDOM % 5) + 1 ))
done
tput sgr0 2 &>/dev/null
}
matrix 'foo bar base'