Bash Scripting Tutorial-3. Entrada do utilizador

entrada do utilizador!

vamos tornar os nossos scripts interativos.

introdução

vimos uma forma de entrada do utilizador (argumentos da linha de comandos) na secção anterior. Agora gostaríamos de introduzir outras maneiras que o usuário pode fornecer entrada para o script Bash. Depois disso, teremos uma discussão sobre quando e onde é melhor usar cada método.após a secção anterior do Mamute, esta é muito mais fácil de passar.,

peça ao Usuário para entrada

Se gostaríamos de pedir ao Usuário para entrada, então usamos um comando chamado read. Este comando recebe a entrada e irá guardá-la numa variável.

read var1

Let’s look at a simple example:

Let’s break it down:

  • Linha 4 – Print a message asking the user for input.
  • linha 6-execute o comando ler e gravar a resposta dos utilizadores na variável varname
  • linha 8 – faça eco de outra mensagem apenas para verificar o comando lido funcionou. Nota: eu tive que colocar um backslash ( \ ) na frente do ‘ para que ele fosse escapado.,
  1. . /introduction.sh Olá, com quem estou a falar?Nota: Ryan acima está em itálico apenas para mostrar que foi algo que eu escrevi. Na entrada do seu terminal aparecerá normalmente.
  2. mais com leitura

    você é capaz de alterar o comportamento de leitura com uma variedade de Opções da linha de comando. (Veja a página do homem para ler para ver todos eles.) Duas opções comumente usadas no entanto são-p que permite que você especifique um prompt E-S que torna a entrada silenciosa., Isto pode tornar mais fácil pedir uma combinação de utilizador e senha, como o exemplo abaixo:

    • Nas linhas 4 e 5 acima, incluímos a linha dentro das aspas para que possamos ter um espaço incluído com ela. Caso contrário, a entrada do Usuário começará logo após o último caractere do prompt que não é ideal do ponto de vista da legibilidade.
    1. ./login.sh
    2. nome de usuário: ryan
    3. Senha:
    4. Obrigado ryan agora temos as suas informações de login

    Mais variáveis

    até agora vimos uma única palavra como entrada. No entanto, podemos fazer mais do que isso.,

    cars.sh

    1. #!/bin/bash
    2. # demonstrar como a leitura realmente funciona
    3. eco de que carros você gosta?
    4. leia car1 car2 car3
    5. echo Seu primeiro carro foi: $car1
    6. echo Seu segundo carro, foi: $car2
    7. echo terceiro carro foi: $car3
    1. ./cars.sh
    2. carros Que você gosta?o seu segundo carro foi: Maserati o seu terceiro carro foi: Bentley. cars.sh de que carros gostas?,o seu segundo carro foi: Maserati o seu terceiro foi: Bentley Lotus o seu terceiro carro foi: Bentley Lotus o mecanismo geral é que você pode fornecer vários nomes variáveis para ler. Leia, em seguida, pegar a sua entrada e dividi-lo em espaços em branco. O primeiro item será então atribuído ao primeiro nome da variável, o segundo item ao segundo nome da variável e assim por diante. Se houver mais itens do que nomes de variáveis, então os itens restantes serão todos adicionados ao último nome da variável., Se houver menos itens do que nomes de variáveis, então os nomes de variáveis restantes serão definidos em branco ou nulo.

      ler a partir de STDIN

      é comum em Linux encaminhar uma série de comandos simples e de propósito único juntos para criar uma solução maior, adaptada às nossas necessidades exatas. A capacidade de fazer isso é uma das forças reais do Linux. Acontece que podemos facilmente acomodar este mecanismo com nossos scripts também. Ao fazê-lo, podemos criar scripts que atuam como filtros para modificar dados de formas específicas para nós.

      Bash acomoda piping e redirecionamento por meio de arquivos especiais., Cada processo recebe seu próprio conjunto de arquivos (um para STDIN, STDOUT e STDERR respectivamente) e eles são ligados quando piping ou redirecionamento é invocado.,ollowing files:

      • STDIN – /proc/<processID>/fd/0
      • STDOUT – /proc/<processID>/fd/1
      • STDERR – /proc/<processID>/fd/2

      To make life more convenient the system creates some shortcuts for us:

      • STDIN – /dev/stdin or /proc/self/fd/0
      • STDOUT – /dev/stdout or /proc/self/fd/1
      • STDERR – /dev/stderr or /proc/self/fd/2

      fd in the paths above stands for file descriptor.,

      portanto, se quisermos tornar o nosso script capaz de processar dados que são encaminhados para ele, tudo o que precisamos fazer é ler o ficheiro relevante. Todos os arquivos mencionados acima se comportam como arquivos normais.

      Let’s break it down:

      • linhas 4, 5, 6 – Print a title for the output
      • linha 8 – cat the file representing STDIN, cut setting the delimiter to a space, fields 2 and 3 then sort the output.

      então qual devo usar?,

      Portanto, agora temos 3 métodos para obter a entrada do utilizador:

      • argumentos da linha de comandos
      • ler a entrada durante a execução do programa
      • aceitar os dados que foram redireccionados para o programa Bash via STDIN

      Qual o método que é melhor depende da situação.

      deve normalmente favorecer os argumentos da linha de comandos sempre que possível. Eles são os mais convenientes para os usuários como os dados serão armazenados em seu histórico de comandos para que eles possam facilmente retornar a ele. É também a melhor abordagem se seu script pode ser chamado por outros scripts ou processos (eg., talvez você queira que corra periodicamente usando CRON).

      às vezes a natureza dos dados é tal que não seria ideal para ser armazenado em histórias de comando dos povos etc. Um bom exemplo disso é as credenciais de login (nome de usuário e senha). Nestas circunstâncias, é melhor ler os dados durante a execução do script.

      Se todo o script está fazendo é processar dados de uma certa forma, então provavelmente é melhor trabalhar com STDIN. Desta forma, ele pode facilmente ser adicionado em um pipeline.

      às vezes você pode achar que uma combinação é ideal., O usuário pode fornecer um nome de arquivo como um argumento de linha de comando e, se não, o script irá processar o que ele encontra no STDIN (quando olhamos para as declarações se veremos como isso pode ser alcançado). Ou talvez os argumentos da linha de comandos definem certo comportamento, mas a leitura também é usada para pedir mais informações, se necessário.

      ultimately you should think about 3 factors when deciding how users will supply data to your Bash script:

      • Ease of use – which of these methods will make it easy for users to use my script?,segurança-há dados sensíveis que eu deva lidar adequadamente?robustez-posso fazê-lo para que a minha Operação de scripts seja intuitiva e flexível e também torne mais difícil cometer erros simples?

      resumo

      leia a entrada de varName do utilizador e guarde-a na variável varName. /dev / stdin um ficheiro que pode ler para obter o STDIN para o programa Bash
      usabilidade a sua escolha de métodos de entrada terá um impacto na utilização do seu programa.

      Activities

      Let’s dabble with input.,

      • crie um script simples que irá pedir ao usuário algumas informações, em seguida, combine isso em uma mensagem que é echo para a tela.
      • adicione ao programa anterior para adicionar alguns dados provenientes de argumentos da linha de comandos e talvez algumas das outras variáveis do sistema.
      • crie um script que irá pegar os dados do STDIN e imprimir apenas a terceira linha.
      • Agora jogue com a criação de um script que se comportará como um filtro., Crie um programa que irá reorganizar o resultado do comando ls-l de uma forma útil (eg, talvez você só imprima o nome do ficheiro, o tamanho e o dono) (dica: o awk pode ser útil aqui).

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *