Digitação de texto de um script de shell [duplicado]

2

Eu sou novo em scripts de shell. Eu gostaria de saber se existe um comando similar a "echo" para exibir texto em um terminal, mas ao invés de simplesmente exibi-lo imediatamente, ele realmente o digita, como se alguém estivesse realmente digitando no terminal?

Eu também apreciaria se alguém pudesse me indicar páginas explicando scripts simples como menus e tal.

    
por Ralph F. 11.11.2014 / 22:21

2 respostas

5

Eis uma solução pura :

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 substituir echo para exibir saída de sequência e formato:
  • %s diz para printf para exibir uma string sem nova linha \n
  • ${string:$i:1} é uma [expansão de parâmetro] 1 para exibir apenas uma letra específica da string
  • $(( )) é alguma 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'
    
por 11.11.2014 / 22:26
0

Eu chamei de escrever escritor:

count=0
echo "enter your name"
read b
sleep 2
a="hello"
a='echo $a" "$b" nice to meet you"'
while [ $count -lt $((${#a}+1)) ]
do
    x='expr substr "$a" $count 1'
    if [ "$x" != " " ]
    then
        echo -n $x
        sleep 0.2
    else echo -n " "
    fi
    count=$(($count+1))
done
echo " "
    
por 11.11.2014 / 22:30