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 Dados