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 o usuário digitar algo; em seguida, armazena essa entrada em uma variável.
Veja como funciona:
#!/bin/bash
echo "What is your name?"
read name
echo "Hello, $name!"Quando este script é executado, ele imprime a pergunta, espera que o usuário digite seu nome e pressione Enter e, em seguida, cumprimenta-o. O comando read pega o que quer que o usuário digite e armazena isso na variável name.
Você pode deixar o prompt mais limpo usando a opção -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 refinado. A opção -p recebe o texto do prompt como argumento, seguido pelo nome da variável que armazenará a entrada.
A entrada do usuário torna os scripts interativos e adaptáveis. Em vez de definir valores diretamente no código, você pode escrever um script que funcione de maneira diferente com base no que o usuário fornece cada vez que o executa.
Desafio
FácilCrie um script de shell chamado greeter.sh que pergunte ao usuário qual é sua cor favorita e, em seguida, exiba uma mensagem usando a entrada fornecida.
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 exibir:Nice! [color] is a great color!(em que [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!Observação: o prompt
What is your favorite color?não é exibido aqui.read -psó exibe seu prompt quando a entrada vem de um teclado, e aqui ela vem do pipe.
Coloque cada linha que você escrever entre aspas simples:
echo 'echo "Hello $name"' >> script.sh. As aspas simples impedem que o shell substitua$nameenquanto o arquivo está sendo escrito, portanto o script mantém a variável e a expande quando é executado. As aspas duplas substituiriam o valor imediatamente.
Dica: Construa o script linha por linha usando
echocom redirecionamento. Useread -p "What is your favorite color? " colorpara exibir o prompt e capturar a entrada; em seguida, useecho "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