Entrada do Usuário em Scripts
Parte da seção Fundamentos do Journey de Terminal da Coddy. Lição 69 de 82.
As variáveis são úteis, mas às vezes você quer que seu script peça informações ao usuário enquanto é executado. O comando read pausa o script e espera que o usuário digite algo, depois armazena essa entrada em uma variável.
Aqui está como funciona:
#!/bin/bash
echo "What is your name?"
read name
echo "Hello, $name!"Quando este script é executado, ele exibe a pergunta, aguarda o usuário digitar seu nome e pressionar Enter, e então o cumprimenta. O comando read pega tudo o que o usuário digita e armazena na variável name.
Você pode deixar o prompt mais limpo usando a flag -p, que combina a mensagem do prompt e a entrada na mesma linha:
#!/bin/bash
read -p "Enter your name: " name
echo "Hello, $name!"Isso exibe Enter your name: e aguarda a entrada na mesma linha, o que parece mais elegante. A flag -p recebe o texto do prompt como seu argumento, seguido pelo nome da variável para armazenar a entrada.
A entrada do usuário torna os scripts interativos e adaptáveis. Em vez de definir valores fixos no código, você pode escrever um único script que funciona de maneira diferente com base no que o usuário fornece a cada vez que o executa.
Desafio
FácilCrie um script shell chamado greeter.sh que peça ao usuário sua cor favorita e, em seguida, exiba uma mensagem usando a entrada informada.
Seu script deve:
- Começar com a linha shebang (
#!/bin/bash) - Usar
readcom a flag-ppara exibir o prompt:What is your favorite color? - Armazenar a entrada em uma variável chamada
color - Usar
echopara imprimir:Nice! [color] is a great color!(onde [color] é a entrada do usuário)
Torne o script executável e, em seguida, execute-o com blue como entrada. Este terminal não é interativo — ele não pode parar e esperar que você digite — então envie a resposta para o script usando um pipe:
echo "blue" | ./greeter.shSua saída deve ser:
Nice! blue is a great color!Nota: o prompt
What is your favorite color?não é exibido aqui. O comandoread -psó imprime seu prompt quando a entrada vem de um teclado, e aqui ela vem do pipe.
Dica: Construa o script linha por linha usando
echocom redirecionamento. Useread -p "What is your favorite color? " colorpara solicitar e capturar a entrada e, em seguida,echo "Nice! $color is a great color!"para exibir o resultado.
Experimente você mesmo
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Diretórios
Criar um DiretórioCopiar um DiretórioMover e Renomear um DiretórioExcluir um DiretórioResumo - Operações com Diretórios7Conteúdo do Arquivo
Head e TailContagem de PalavrasComando SortComando UniqGrep BásicoGrep com FlagsResumo - Detetive de Texto10Projeto Analisador de Log
Visão Geral do ProjetoVisualizando o Arquivo de Log13Fundamentos de Shell Scripting
O Que É Um Script de ShellCriar e Executar um ScriptVariáveis em ScriptsEntrada do Usuário em ScriptsInstrução IfLaço ForLaço WhileResumo - Adivinhador de Números2Navegação
Imprimir Diretório de TrabalhoListar ArquivosMudar DiretórioCaminhos Absolutos vs RelativosDiretório Home e RaizResumo - Encontre Seu Caminho8Redirecionamento
Saída PadrãoSobrescrever em um ArquivoAnexar a um ArquivoEntrada PadrãoErro PadrãoRecapitulação - Construtor de Log3Arquivos
Criar um ArquivoLer um ArquivoCopiar um ArquivoMover e Renomear um ArquivoExcluir um ArquivoResumo - Operações com Arquivos6Curingas e Padrões
O Curinga AsteriscoO Curinga InterrogaçãoCuringas de ColchetesCombinando CuringasResumo - Operações Seletivas9Pipes
O Que é um PipeEncadeando Dois ComandosEncadeando Múltiplos ComandosPipe com GrepResumo - Pipeline de DadosPratique por conta própria: Playground de Terminal