Programação em bash - parte 2

segunda parte Este mini-tutorial programação em Bater, onde aprendemos a usar Ciclos e outras ferramentas que nos ajudarão a melhorar as funcionalidades do nosso Scripts.

O If condicional

A função de If é aplicar um filtro e realizar uma operação ou tarefa para cada tipo de filtro aplicado. Sua estrutura é a seguinte:

Se [condição]; então comandos elif [condição]; então o else comanda; comandos fi

Um exemplo é mostrado próximo ao loop For em sua respectiva seção.

Ciclos

1. Enquanto: ele executará todos os comandos especificados entre do e done, desde que a condição seja verdadeira. Se quisermos passar operadores de comparação para ele, a expressão deve estar entre colchetes.

enquanto CONDITION / COMMAND executa os comandos

Exemplo: tabuada de multiplicação de um número

#! / bin / bash X = 1 echo "Insira um número e pressione ENTER" leia M #O loop controla que X é menor ou igual a 10 enquanto [$ X –le 10] do #In R armazenamos a multiplicação de X por MR = $ [X * M] #Esta multiplicação é impressa na tela echo "$ M * $ X = $ R" #Com deixar, aumentamos o valor de X em 1 unidade seja X = $ X + 1 feito

2. For: armazena uma lista de elementos em uma variável, que será usada para realizar certas operações a cada ciclo.

para VARIABLE em ELEMENTS faça os comandos feitos

Exemplo: programa que copia um arquivo de uma pasta para outra, substituindo um arquivo antigo.

# / bin / bash # Estabelecemos os diretórios de origem e destino ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Nos posicionamos no cd de origem $ ORIGIN #De todos os arquivos, queremos apenas aquele que é # chamar FILE para FILE em * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f filtra os arquivos regulares, uma vez que os diretórios não são # nada bons para nós. –Não filtra # arquivos “mais novos” do que aqueles # encontrados na pasta de destino if [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; então echo "Copiando $ FILE ..." # copiamos o arquivo com cp cp $ FILE $ ARCH-DESTINATION fi done # Nós cd para sair da pasta de origem cd

Outro exemplo: script onde o usuário deve adivinhar um número aleatório gerado pelo computador.

# / bin / bash #Um número aleatório é gerado de 1 a 10, ele é # salvo em RANDOM RANDOM = $ [$ RANDOM% 10 + 1] enquanto [1] do echo –n "Digite um número:" leia NUM # Compare se o número escolhido pelo usuário é # igual a RANDOM; lembre-se de usar $ para avaliar os # valores das variáveis ​​e não seus nomes if [“$ NUM –eq“ $ RANDOM ”]; em seguida, echo "Você acertou!" #break permite terminar o loop durante o intervalo #Se o número for menor que RANDOM elif [“$ NUM –gt“ $ RANDOM ”]; then echo "É menor" "Se não, é maior que RANDOM senão echo" É maior "fi feito

3. Até: bastante semelhante em estrutura a While, exceto que o código sempre executa enquanto a avaliação da condição é negativa, ou seja, o programa continua executando "até que a condição ocorra"

até CONDITION / COMMAND fazer os comandos feitos

Exemplo: imprima os números 10-20 em ordem decrescente

#! / bin / bash CONT = 20 # Enquanto o contador for menor que 10 (-lt, “inferior #than”) o código é executado até [$ CONT -lt 10]; do echo "CONTADOR $ CONT" #A CONT é subtraído por uma unidade deixe CONT- = 1 feito

4. Select: este último ciclo é um caso especial, pois geralmente é utilizado para fazer menus rapidamente. Funciona de forma semelhante ao loop For.

selecione VARIÁVEL em LISTA de comandos feitos

Exemplo: dê ao usuário a capacidade de continuar ou encerrar o script.

#! / bin / bash #item é uma variável que responde ao que o # usuário escolhe, Continuar e Concluir são as # opções disponíveis para ele, embora outras opções possam ser adicionadas # mais selecione o item em Continuar Concluir faça #Se o usuário escolher terminar o programa, então com uma pausa saímos do ciclo. if [$ item = "Concluir"]; então quebra o fi
Obrigado Juan Carlos Ortiz!

Deixe um comentário

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

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   Médio difícil dito

    Acho algo assim: tar -cf - Directory | (cd / outro / diretório; tar -xvf -)

    Em seguida, seria semelhante a / outro / diretório / diretório
    Assim eu compactei um diretório e você descompactou em outro lugar….

  2.   Miguel Angel dito

    Olá, bom tutor, estou aprendendo sobre o assunto e está tudo bem, só que não consegui fazer um programa que me ajude, para ver se você pode me ajudar por favor.

    Preciso fazer um ciclo, no qual receberá como parâmetros uma lista de um arquivo fonte, essa lista só traz nomes (sem extensão), para que o ciclo faça o seguinte, procure o referido nome recebido em um diretório (que é aquele que procuraremos), extraia e copie o arquivo (nome completo já com extensão) e o caminho absoluto e crie-o em outro arquivo de destino.

    Até agora, tenho o seguinte:

    enquanto lê a linha
    do
    echo -e "$ line"
    find / home / myuser / dof "$ line" -exec readlink -f {};
    done <testlist.txt Até agora li o arquivo, todas as linhas que tem, mas não posso fazer com que ele procure por esse arquivo e extraia a informação, se puder me ajudar por favor, obrigado. Felicidades

  3.   pamela galaviz dito

    Muito obrigado pela contribuição 🙂

  4.   Mario javier dito

    oi ... Espero que você possa ajudar na próxima prática ... Descompacte o arquivo em tgz no diretório especificado, além de especificar o usuário e o grupo para todos os diretórios e arquivos existentes e atribuir permissões aos arquivos e diretórios
    nota: arquivos prontos para leitura e gravação
    permissão de execução de diretórios

  5.   Juank dito

    ARCH-DESTINATION é uma variável na qual queremos salvar o caminho do arquivo de destino, perdoe a redundância. Em seguida, a esta variável indicamos a variável DESTINO, que acima contém o caminho para a pasta Documentos e adicionamos a "variável" ARQUIVO, que contém o nome do arquivo. Se esse arquivo fosse, por exemplo, list.doc, a variável ARCH-DESTINATION seria igual a /home/Usuario/Documentos/listado.doc

  6.   Vamos usar Linux dito

    É o artigo anterior. Você pode acessá-lo em http://usemoslinux.blogspot.com

    Abraço! Paulo.

  7.   Frank dito

    Bom dia cara, só obrigado, seu blog é muito bom, mas não consigo pegar a primeira parte de Programação no Bash, onde a pego obrigado, saudações

  8.   Saito Mordraw dito

    Duas partes extraordinárias, meus sinceros parabéns.

    Simplesmente maravilhoso.

  9.   Fredy dito

    Bien

  10.   Hugo dito

    Olá, estou fazendo um programa com um CASE, o que eu quero fazer e não sei como, por exemplo:

    echo Escolhe uma opção:
    eco
    echo 1. opção 1
    echo 2. opção 2
    echo 3. opção 3
    echo 4. opção 4
    echo 5. Sair
    ler var
    caso "$ var" em
    1)
    echo "Você selecionou a opção 1"
    ;;
    2)
    echo "Você selecionou a opção 2"
    ;;
    3)
    jogou fora "….."
    ;;
    4)
    jogou fora "…."
    ;;
    5)
    jogou fora "…"

    ;;
    *)
    echo "opção errada"
    ;;
    esac

    ok o que eu não sei fazer é que quando eu seleciono a opção 4 que é sair, pergunto se eu realmente quero sair, e me dá 2 opções S e N

    e a outra é que quando você selecionar algo diferente dos números 1..5, não vote em mim do script….

    Você poderia me ajudar obrigado.

  11.   DAPAMA21 dito

    Olá, comecei a fazer scripts há 1 mês e graças às postagens de seus scripts. Terei feito cerca de 15-20. Muito obrigado antecipadamente. Mas agora nosso professor nos deu um trabalho do qual fiquei estagnado. Já que o professor pergunta:
    passando um diretório, copie para sua home todos os arquivos que estão naquele diretório em ordem alfabética e nomeando-os arquivo1 arquivo2 etc ... etc ...
    Agora estou no momento de encontrar ou localizar, eu queria usar find, mas ao fornecer o código de erro ao colocá-lo em dev null, as permissões negadas então eu me engano e ao colocar o locate estou aqui:
    localizar $ 1 | grep "/ $ {1} \ $"
    mas claro que com isso todos saem ...
    Muito obrigado se você leu.
    Se você puder me ajudar seria um grande favor.

  12.   luis dito

    Eu gostaria que você me ajudasse com isso.
    1.-Digite um número inteiro no teclado e exiba duas vezes e triplique esse número na tela. 2.- Faça um programa para decidir se um número introduzido pelo teclado é divisível por 3 ou não.
    3.- Faça um programa para encontrar a soma de: ???????? + ???????? + ???????? + ???????? + ⋯? ???????
    4.- Faça um programa para encontrar a soma 1 + 3 + 5 + 7 + 9 · · · + (2n + 1).
    5.-Faça um programa que imprima a palavra Linux na tela 10 vezes
    6.-Faça um programa que imprima a palavra Linux na tela o número de vezes indicado por um usuário.
    7.-Insira um valor em horas e converta-os em minutos e segundos.
    8.-Calcule a área de um triângulo
    9.-Digite um número no teclado, então se você digitar 2, ele deve ser ao quadrado, 3 ao cubo, 4 ao quarto e assim por diante até 6.
    10-Calcule a pensão que o aluno deve pagar, o código da especialidade deve ser inserido, e os dias de atraso:
    CÓDIGO
    ESPECIALIDADE
    MONTANTE
    DURANTE POR DIA
    1
    INFORMÁTICA
    160
    1
    2
    ENFERMAGEM
    150
    1.5
    3
    SECRETARIADO
    140
    2
    4
    TURISMO
    180
    2.5
    5
    CONTABILIDADE
    160
    1
    Você deve mostrar a especialidade que está estudando, o valor da pensão, a inadimplência e o valor total a ser pago.

  13.   charly dito

    Ola alguem pode me ajudar?
    Preciso de «Solicitar três palavras pelo teclado e exibi-las em ordem alfabética de A a z»
    Em linguagem Bash ou sh para LINUX porfaborrrr