Capturando dados do teclado com o comando READ
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 |