Cassic

Capturando dados do teclado com o comando READ

Autor: Bruno Lopes


  O comando READ captura o que o usuário digita no computador e passa para uma variável. READ é usado da seguinte forma:

  read nome_da_variavel

  Exemplo:

read_exemplo.sh
echo "Qual seu nome?"
read nome
echo "Olá $nome! Prazer em conhecê-lo"
Mostrará na tela
Qual seu nome?
Ludwig(dado digitado pelo usuário)
Olá Ludwig! Prazer em conhecê-lo

  Aplicação Prática:

  Vamos refazer o script que dá a área do Quadrado Usando o valor que o usuário der para o lado do quadrado e verificando se o valor digitado é maior que 0, pois não existe quadrado com lado 0.

area_quadrado.sh
echo "Qual o tamanho do lado do quadrado?"
read lado
     if [ $lado -gt 0 ]
     then
     echo "A área do quadrado é $(($lado**2)) e o perímetro é $(($lado*4))"
     else
     echo "Um quadrado precisa ter lado maior que 0 ;)"
     fi

  Para tornar o código mais simples, o próprio READ tem a opção de escrever algo na tela, para informar ao usuário o que ele deve digitar, nesse caso o comando READ é usado da seguinte forma:

  read -p "texto que aparecerá na tela" variável

  Veja um exemplo:

read_exemplo2.sh
read -p "Seu nome:" nome
echo "Olá $nome"
Mostrará na tela
Seu nome: E o texto digitado pelo usuário.
Olá "texto digitado pelo usuário"

  Imagine agora fazer um script que pega os lados de um retângulo e dá o perímetro. Com o conhecimento que tem até agora o script que faria seria:

perimetro_ret1.sh
echo "Dê o valor da base do retângulo"
read base
echo "Dê o valor da altura do retângulo"
read altura
echo "O perímetro do retângulo é $((($base+$altura)*2))"

  Seria mais prático pedir para usuário digitar "base" "altura" e já calcular o valor. Veja:

perimetro_ret2.sh
echo "Dê o valor da base e da altura do retângulo"
read base altura
echo "O perímetro do retângulo é $((($base+$altura)*2))"

  Basta digitar o valor da base e da altura com um espaço entre os valores, exemplo: 10 5. O READ guarda o primeiro valor (no nosso exemplo 10) na variável "base" e guarda segundo valor (no nosso exemplo 5) na variável "altura". Você pode usar quantas variáveis desejar com o comando READ
  Mas e se eu tiver 2 variáveis e o usuário escrever 3 palavras? Nesse caso a primeira palavra é armazenada na primeira variável e as palavras restantes na segunda variável. Veja um exemplo:

nome.sh
echo "Digite seu Nome e Sobrenome"
read nome sobrenome
echo "Seu nome é: $nome"
echo "Seu sobrenome é: $sobrenome"
Mostrará na tela
Se o usuário digitar:
Ludwig Sandman Starr
Aparecerá:
Seu nome é: Ludwig
Seu sobrenome é: Sandman Starr