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
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….
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
Muito obrigado pela contribuição 🙂
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
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
É o artigo anterior. Você pode acessá-lo em http://usemoslinux.blogspot.com
Abraço! Paulo.
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
Duas partes extraordinárias, meus sinceros parabéns.
Simplesmente maravilhoso.
Bien
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.
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.
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.
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