Transcrições
1. Introdução: Olá e bem-vindo a divulgar aqui. Por que eu quero ensiná-lo sobre scripts bash. Meu nome é Eric Samara. Tenho 36 anos. Tenho aproximadamente 20 anos de experiência em operar uma Lennox. E por que você gostaria de fazer para aprender a fazer scripts bash enquanto muito simples tudo o que você faz em seu computador. Minha grande maioria pode ser feita na linha de comando. Tudo o que pode ser feito na linha de comando pode ser script. Você pode criar muitos scripts para ajudar a si mesmo em seu diário em suas tarefas diárias. Então, sem mais espera, vamos aprender a guiar.
2. Sobre notes.org: Ok, vamos falar sobre o arquivo da organização aqui por um segundo. A razão pela qual eu faço isso é porque o modo órgão adicionar tanta funcionalidade a um
arquivo de texto simples que aumentará muito a sua remoção deste custo. Você vai sair com a classe com um único arquivo contendo todas as suas notas que você quer levar em tudo. Que toda a informação que eu queria transferir para referenciar o exercício, tudo isso dentro de um arquivo de texto. Então, se você não tem o Mac um modo de órgão e stall, Eu convido você para ir para o limite livre tem sido vídeo número 14 vai levá-lo através do processo e vê-lo na próxima casa.
3. Personagens especiais: Ok, bem, vamos começar. Iria bater o script primeiro. Eu quero rever o que você, uh sobre o termo de alguns personagens especiais que começam com simples para adicionar comentários a um script baixo enquanto em uma aliança script bash. Começando com este personagem é um comentário. Por exemplo, este seria um berço inútil porque não faz nada. Ele só tem um comentário sobre ele. Ele também pode seguir o fim de um comando. Mas você precisa ter um espaço entre o fim do seu comando e um sinal de comando. Caso contrário, ele irá, através de um erro bash também permitirá que você coloque comentários embutidos dentro de um pipe, por exemplo, e em um monte de outras áreas, que torna muito difícil de ler. Segundo caractere especial que eu quero passar pelo qual você é um recomendo separador de semi coluna permite que você coloque mais de um comando na mesma linha. Então, por exemplo, este aqui eco ello e esse eco eles estão todos na mesma linha. Então, se eu fosse remover os resultados aqui e eu vou aqui e eu pressionar controle C controle, veja, confirmar que eu quero avaliar o casaco. Tenho os meus resultados aqui atrás. Eu também sei que outra separação de elogios normais e Olynyk Shell também funciona em um
script bash , por exemplo, este que garfos
um, um, um, um, processo em segundo plano e, em seguida, iniciar o processo que vem depois. Você também pode usar isso em um script para ah e dobrar um aqui, que significa que o segundo comando é executado. Se o primeiro elogio, este sucesso também pode ser colocado em um script bash. Então, qual é a diferença entre aspas duplas e aspas simples? A diferença é que aspas duplas irá preservar o caráter mais especial da interpretação, enquanto aspas simples bem preservadas, todos os caracteres especiais. Vou começar aqui com um exemplo de sem aspas em uma linha de comando e aspas duplas. Então, nesta primeira linha aqui, isso irá listar todo o arquivo em barra var log barra que começa com s porquê e tem qualquer
outra coisa depois, enquanto o 2º 1 aqui vai procurar o arquivo lido e s por que com uma estrela no n. Então, se eu tinha controle C controle, veja para avaliar o código que minha primeira lista de comandos pode arquivar enquanto meu 2º 1 me diz que não
há nenhum arquivo s. Por que estrela neste exemplo aqui eu demonstrar a diferença na interpretação de duplo aspas simples. Então eu tenho uma variável chamada bar que contém a ajuda string. Então, se eu ecoar assim, você pode ver nos resultados aqui em baixo ecoa Olá. É uma maneira adequada de escrever, mas é um bom hábito citar sua variável de qualquer maneira, então aspas duplas ecoam o valor do nosso tempo. A citação única igual imprime literalmente dólar var. Então só para mostrar o exemplo, se eu apagar os resultados e eu vir aqui e eu tinha controle ver duas vezes eu vejo o resultado da minha linha de
comando bem ali. Então é isso para o personagem especial simples que você tem que se lembrar por agora. Na próxima sessão, vamos começar a procurar mais em variáveis e funções
4. Variáveis de baixo: Agora vamos olhar para variável em bash. As variáveis são desamarradas. Basicamente, o que isso significa é que debaixo do capô eles são todos cordas de caracteres. Exceto se você é variável contém apenas dígito bash permitirá que você faça nossa
cooperação admitida sobre ele. Veja para me ler para saber como eu vou abrir essa seção de código aqui porque eu quero que ele em buffer
total. Então aqui eu declaro uma variável oito. É um bom Abbott, mas não é necessário. Atribuí uma string e crio uma variável de atribuição. Bata o número dois, eu faço eco deles. Então eu dou a volta e mudei oito para o número quatro e bati para uma corda. Faço eco deles. Uma vez que eu estou aqui, eu crio a cena variável e eu atribui a ela o resultado de um mais dois, que é atualmente permitido porque ele contém apenas dígitos. Então eu tento fazer a mesma coisa. Eu crio a variável D e eu tento atribuí-la B mais três, exceto batida é uma corda. Não é um dígito agora, então vamos ver os resultados disso. Então, se eu tinha controle C cena de controle, então você pode ver os resultados aqui e você pode ver o erro onde bash reclamar sobre a
tentativa de fazer na operação aritmética na string e o resultado dessa variável. Então este é o básico acelerado de como a variável funciona. Vamos vê-los mais detalhadamente quando entramos para declarar ou digitar a seção
na próxima sessão, vamos olhar para funções.
5. Funções: Agora vamos olhar para funções, o básico de que declarar uma função e passá-lo parâmetros funções ou declarar com a função. Exemplo de palavra-chave. Função meu funk após a função nomeada. Precisa haver um espaço, e depois disso você pode abrir o conteúdo da função com os colchetes, mas você precisa ter um espaço entre eles. Você pode colocar esses suportes aqui no meio, exceto que nada pode entrar nele. Então, é útil se você tem o hábito de fazê-lo para, digamos, programadores
C. Mas Bash não aceita argumentos dessa maneira. Você não tem permissão para colocar nada dentro dela. Então vamos olhar para a primeira seção de código aqui que eu tenho. Esqueci de mencionar algo muito importante no início desta aula. Esta linha aqui é o que chamamos de “ela bang “, e ela precisa estar lá. Este é o caminho para o interpretador de shell ou intérprete que vai interpretar seu script porque estamos trabalhando em bash, scripting a primeira linha de cada bash. O guião tem de ser isto, , por isso vamos voltar à função. Então, como você vê, eu declaro uma função que eu preciso ter um espaço. Se não houver espaço bash vai reclamar sobre isso agora. Disfunção aqui. O que ele faz que primeiro ecoará que você chamou uma função. Em seguida, ele vai testar para ver se o perímetro um um um zero em ligado Se ele é, isso significa que você não passou quaisquer parâmetros. Caso contrário, ele irá exibir os parâmetros. Isto é como você acessar os argumentos foram uma função número um, número dois número três e eles são separados por espaço. Então esta é a mesma coisa, exceto usar esses colchetes aqui. Como eu disse, não
é necessário. Mas se você tem o hábito de colocar dem, deixe-os lá. Se seu programador C, você vai gostar. Então vamos executar o controle de disco Dhere C controle chicotes do mar. Lá vamos nós e você pode ver o resultado dessa função aqui. Então, mais uma vez convido você a entrar lá, mexer com as coisas, mudá-las, quebrá-las e na próxima sessão vamos ver como o que pode ser devolvido de uma função
bash
6. de de função: Ok, o que poderia ser devolvido de uma função em Bash? Basta colocar um inteiro Onley Qualquer tentativa de retornar caso contrário resultará em um mais próximo. Então na discoteca o Skoda aqui que eu tenho eu tenho a mesma função que eu tinha antes exceto por qualquer um retornou um zero ou um. Eu então criei uma função chamada válvula vermelha de verificação para o valor de retorno de verificação e aqui. E isso fará mais sentido quando passarmos pelo dia. Se instruções verificar que os primeiros parâmetros que primeiro argumento que a função receber Se ele está acima de zero, isso significa que temos um erro. Se de outra forma, significa sucesso. Então, primeiro chamamos a minha função e, em seguida, chamamos ou função para tomar o valor de retorno. Sempre que você precisar verificar o valor de retorno do seu último comando de execução e bash, você o excede com você, acessá-lo com o sinal de ponto de interrogação dólar. Então você executar um comando, ele retornará um valor zero ou um ou mais, a fim de verificar se esse valor está armazenado
na variável. É um site especial variável estrela dólar. Então nós fazemos isso novamente iria verificar minha função com um parâmetro e, em seguida, a mesma coisa com os outros aqui. Então, se olharmos se executamos com controle C controle ver, você pode vê-lo. Embora você tenha chamado você não me deu um parâmetro de retorno Número um função retornou um. Então é assim que você retorna o valor de uma função. Então, e se você precisar retornar a corda? Bem, você não pode retornar a string, mas você pode, em certo sentido, passar uma variável por referência e modificada em variável de dentro do próprio script. Então, se digamos que você precisa retornar um valor, você tem que realmente mudar uma variável fora das funções lidar enquanto madeira Isso é legal . Então, aqui eu declaro var eu faço uma função Rev são que vai mal e vamos colocar em seu primeiro parâmetro. Colocará o que eu coloquei aqui. Então, se eu olhar aqui, eu declaro minha função. Eu atribui uma carga minha variável var eu vou com eu chamei a função e eu passei minha variável do nosso, mas aviso Não há nenhum sinal de dólar aqui antes,
Caso contrário, ele não vai funcionar. E depois que eu ir com a corda, var terá mudado para
L.A mundo. Então, se eu fizer isso e eu executá-lo, você pode ver que ele é ecoado antes de ser enviado para. Rev são um igual após então você não pode retornar nada além de um inteiro de uma
função bash . Mas você pode usar a passagem de uma variável por referência, a fim de alterar alguma variável, e na próxima sessão vamos olhar, declarar e digitar e olhar um pouco mais em variáveis.
7. Declaração de revelação: OK, agora vamos olhar mais detalhadamente na declaração declarar. Você já me viu usá-lo em um exemplo apenas alguns minutos atrás, declarar um typeset. Ambos são iguais. Declare uma versão específica. Dois de bash e typeset funciona em outro shell como uma declaração de salsicha vem com opções, e nós vamos olhar para ele aqui. O traço, Nossa opção é somente leitura. É um equivalente bruto ao mar. Tipo constante. Qualquer tentativa de alterar o valor resultará em erros. Então, se eu olhar para o script aqui, Eu declaro, ler apenas o nosso ove r e eu disse isso para dois. Eu ecoei uma variável. Então eu tento alterá-lo e eu eco a variável novamente. Vou remover os últimos resultados. Execute novamente o script, e você pode ver a variável permaneceu a mesma e bash através de um erro quando assistimos para alterá-lo, você pode usar declare para declarar inteiro uh, com a opção dash I. Então, se eu declarar um aqui o meu fim, eu atribuo para eu ecoá-lo. Então eu tento mudá-lo para uma string com espaços e eu ecoo meu fim novamente. E como você pode ver bash aqui lança um erro e a variável permanece no número dois. Então eu tentei mudá-lo para uma string sem espaços nele. E Bash não se queixa, mas meus zeros iguais. O ponto é, se você declarar um inteiro específico, certifique-se de que ele permanece uma integral específica. Caso contrário, não especifique que é o que você quer. Você terá menos restrição onde você será capaz de mudá-lo de volta para uma boa medida. Eu vou remover os resultados aqui e nós executamos o script e nós temos os mesmos resultados agora para declarar um Neri com bashes a opção de pagamento traço. Então aqui eu declaro meu Eri que inicializei a área. Eles são separados de espaço Aqui eu uso um loop for que vai ver em mais detalhes para
passar por cada elemento dentro da própria área e eu ecoá-los. Eu faço isso de outra maneira, usando um loop while e eu realmente faço em operação aritmética neste caso aqui. Então aqueles dois vamos ver com mais detalhes mais adiante na estrada. Mas se fizermos isso agora, você pode vê-lo passando pela área e me dando a alguns do exemplo, você também pode declarar especificamente uma função. Agora. Se você declarar f argumento widow, ele faz uma listagem de todas as funções que foram definidas anteriormente dentro desse script. Então aqui declaro minha função e especifico a dívida. É uma função com a opção traço F. Então eu declaro variável meu funk, Torri. Mas eu não digo o que é essa função que eu não declarei e isso não é um problema. Esta é a função de definição que eu declarei anteriormente. E agora eu acabei de projetar uma variável de função. Então o meu funk três agora é uma função. Eu os chamei de 123 e então eu costumava declarar Dash F sem opções. Vamos ver os resultados. Você chamou um para o qual ligou. Você chamou três e, em seguida, lista todas as funções em si. No script, o traço sai para exportações. Eu listado aqui porque se você olhar para as opções por conta própria, você vai ver que está lá. Isso descreverei mais tarde. Isso fará muito mais sentido quando tivermos uma melhor compreensão do
ambiente bash e suas funções de exportação. e agora, por si só. Tudo o que vimos anteriormente pode até mesmo experimentá-lo em seu shell em seu próprio terminal. Certo, declarando que verá que irá imprimir um monte de informações. É bom olhar. Então, na próxima sessão, vamos começar a olhar para declaração condicional, incluindo a instrução if na declaração caso.
8. Se declaração: Vamos começar a olhar para a declaração condicional do estadista condicional. Seu primeiro olhar para a declaração if Você tem uma referência como de costume aqui. Vamos dar uma olhada na estrutura. Todos fazem isso em um buffer, por isso é mais fácil que você pode colocar in if declaração em uma linha como esta. Se o seu teste de recomendação estivesse aqui, então você precisaria de uma coluna semi. O espaço é importante. Den seu código a ser executado. A mesma coisa com o semi Colin nos espaços. Então isso seria uma declaração se na única linha se você pode fazê-lo. Os suportes compactados nem sempre são necessários, mas é um bom hábito, mas você pode colocá-lo em uma linha múltipla como esta. Se a sua sequência de teste aqui semi coluna importante e assim é o espaço, você pode usá-lo com colchetes simples ou colchetes duplos. Você vai ver e entender por que um pouco mais para baixo. O que? Isto é como você faz se você quiser adicionar uma instrução else se semi coluna den ales e terminar com f você e é assim que você faria o seu if else se uma declaração else, Então note que o outro se também requer uma coluna semi e, em seguida, palavra-chave. E, como sempre, espaços são importantes. Então, qual é a diferença entre os colchetes simples nos colchetes duplos? E aqui temos um
bom roteiro. Esta é uma cópia e cola da fonte escrita lá. Portanto, ao contrário dos colchetes simples, colchetes
duplos impedem a divisão de palavras de valores variáveis. Então, se R é igual em barra com espaços, você não precisa aspas duplas var em um teste, mesmo que continue a ser um bom hábito. Além disso, os colchetes duplos impede a expansão de nome de caminho tão literal string com curinga. Não tente gastar para arquivar. Lembre-se do nosso Exception Remember, por exemplo, com o arquivo LS no início, usando colchetes
duplos, duplo igual e ah negativo igual interpretar string à direita como padrão glub shell para ser combinado com o valor à esquerda, por exemplo, valor é igual à válvula. Ok, vamos dar uma olhada neste roteiro aqui. Aqui está o que eu fiz. Eu criei meu valor de R um e R dois, que são os mesmos. E então eu de acordo aqui, eu ecoei o teste, e eu usei a citação, aspas
simples e aspas duplas de tal forma que ele irá exibir exatamente o que é exibido no na seção de teste aqui. E então você tem os resultados. Então eu tenho os colchetes simples com Div estão em aspas duplas simples volta com a variável sem aspas. Colchet duplo seria aspas duplas, Dracut
duplo sem aspas e, em seguida, um tipo diferente de sinal de igual colocando
em sinais de igual em vez de um colocando a mesma coisa aqui para igual sinal de um colchete, sem aspas e assim por diante. Então, se executarmos o disco devido, você pode ver bem os resultados aqui. E haverá um bom exemplo de como usar aspas simples e duplas e qual a diferença que ele simplesmente faz por ter colchetes simples ou duplos aqui. Então você vê que quando fazemos o igual como este var um Anvar para são iguais ele correspondeu quando fizemos isso Como esta barra quer Anvar para não são iguais, ele não soma-se nas aspas duplas com os colchetes duplos eles são iguais a
aspas duplas colchetes duplos sem aspas Eles são iguais e a mesma coisa aqui dis corresponde Isso não equivale e aqueles são iguais e assim são aqueles. Então, isso dá-lhe um bom exemplo de comportamento diferente, dependendo de aspas duplas, colchetes
duplos, colchetes
simples. Convido você a entrar no roteiro da morte e brincar com ele. Mude, modifique, quebre com eles. Testes diferentes. Ah, vamos Seymour para o possível teste que pode ser feito na próxima seção aqui.
9. Se teste em arquivos: Está bem. Agora, vamos ver que tipo de testes podemos fazer. Próprio arquivos em links para obter uma lista completa de testes que você pode fazer em arquivos. Siga o link que está logo acima aqui. Vamos repassar isso rapidamente juntos depois disso, mas deixe-me primeiro remover os resultados. Aqui. Vamos ver o que temos aqui. Tenho alguns exemplos. Então aqui começamos a definir um arquivo em uma variável. E agora eu testo para ver com a opção Dash oito. Se o arquivo existir, observe que na instrução if são usados colchetes únicos e, como de costume, espaços são importantes. Agora, aqui eu te mostro um teste negativo. Este é um arquivo que não existe. Então, se o arquivo não existe, vamos este loop caso contrário, porque este loop agora, Eu redefinir o arquivo Desist, amor. E então eu verifiquei para ver se o arquivo existe. E então eu verifiquei para ver se o arquivo não é um diretório. Então vamos fechar isso e você pode ver os resultados ali que meus vírus gostam existem. Este não tem. E este é um arquivo normal, e não é um diretório Agora vamos dar uma olhada rápida aqui nos detalhes porque há uma extensa lista de opções que você pode fazer. Eso, por exemplo, este que vimos para ver se o arquivo existe que equivale a true, mesmo que seja um diretório. Porque no Lennix, um diretório é apenas um arquivo que tem a propriedade de conter outros arquivos. Será que a unidade para saber se é um dispositivo especial de bloco? Um personagem correto. Arquivo especial. Desculpe Bloco arquivo especial e diretor arquivos especiais para mais detalhes sobre isso, você pode ver meus custos no em Lenox. Tudo é um arquivo. Eu forneço uma explicação muito boa do que queremos dizer com isso um traço DS para saber se é um diretório. Dashi é o mesmo que isso, hein? Uh, tarde. É um arquivo normal. Então, nem um diretório, nem um link simbólico, nem um bloco especial ou nada disso. Apenas um arquivo normal. Uh, isso é girar fora de sua ligação simbólica. Como você pode ver, há um bastante extenso até o ponto que neste teste aqui, é verdade. arquivo um foi alterado mais recentemente do que o arquivado. Fazer ou um arquivo existe e cair para ele não. Então você pode ver que há uma longa lista de testes extensos que você pode fazer em arquivos dentro da instrução if no script bash eso Eu convido você a passar e modificar esses pedaços de código lá, uh, ver que tipo de testes que você pode fazer em seu próprio sistema de arquivos.
10. Comparação de binário: OK, agora vamos olhar para operadores de comparação. Mais uma vez, você tem a referência aqui que nós iremos. Nós vamos passar para pegá-la rapidamente no final. Primeiro quero mostrar-lhe um operador específico da Bash. Isso cria uma comparação binária e eles são para ser usado com inteiros Onley eu faço exibir no script O que acontece se você usá-lo com uma string usa diferentes conjuntos de ah, operadores de comparação
conforto. Então vamos dar uma olhada aqui. Eu criei três variáveis ABC A e B igual a um c igual a dois e eu eco a informação aqui e eu usei uma única citação para ter certeza de que isso ecoa dólar A e não valor dentro do dólar oito. Uh, agora vamos começar a passar pelo teste que realizamos aqui. Então, neste caso aqui, verificamos se o dólar A é igual à batida do dólar. E mais uma vez, eu ecoo usando aspas simples e duplas sempre
que necessário, para que no resultado, você veja o teste que foi realizado e os resultados que você obteve Então este aqui não é igual. Este operador ah é maior do que maior ou igual menor do que menor ou igual. Em seguida, procedo a definir a minha variável A e B para uma string uma palavra. Alô? Olá. Eles são Eles devem resultar em ser iguais. Exceto que você verá no exemplo. E esses não devem ser usados para a força. Então vamos fechar isto aqui. Mas isso é executar os resultados. Então nós temos a variável, e agora você pode ver o teste e o resultado que temos. Agora, isso foi quando tentamos, uh, comparar duas cordas. Este é o erro que o bash nos deu porque ele estava esperando uma expressão inteira em vez disso. E isso resulta em não ser igual, mesmo que as duas cordas fossem na verdade as mesmas. Agora vamos ver o que parece. Se estamos a usar colchetes duplos em vez de colchetes simples, ele funciona o mesmo peso desde que você está usando inteiros Ah, para executar a comparação agora ele vai trabalhar diferente aqui uma vez que eu mudá-lo para string. Veja que A e B não é igual a ok, e eu executar a mesma comparação aqui, mas seria colchetes duplos vamos ver os resultados rapidamente. Primeiro de tudo, ele não deu erro, mas ele está me dizendo que um é igual para estar em minhas cordas, mesmo que eles não são iguais. Eso lembrou-se nessas comparações. Eles são operador de comparação binária, e eles são para ser usado para inteiros em Lee. Na próxima sessão, analisamos formas mais comuns de fazer alguns testes.
11. Se com with: OK, agora vamos olhar para maneiras mais comuns de testar Uh, isso é mau denota aqui, primeiro lugar. Ah, um pequeno aviso. mais comuns de testar significam mais maneiras de se confundir sobre como as coisas funcionam. Bata uma linguagem feia para brincar. Muito forte, muito poderoso, mas muito feio. Então, primeiro, vamos olhar para a diferença na instrução if usando colchetes simples Dan usando colchetes
duplos e, em seguida, usando colchetes duplos como este o resultado dos
três scripts a seguir pode ser um pouco confuso. O que é importante notar e lembrar é que o colchete único se o teste funciona bem para verificar se inteiros ou igual ou duplo igual, isso não funciona muito bem no ponto de colchete único sendo colchetes simples são bons para iguais ou nada em Tudo. Suportes únicos não são confiáveis para ver o mínimo quando se compara com aqueles operador pelos operadores
re funciona bem em suportes únicos por operadores inimigos é o único que acabamos de ver. Então vamos dar uma olhada rápida aqui no código para comparação de inteiros com colchetes simples. Então o que eu fiz naquele casaco é que eu configurei ajuda variável, estar em C e então eu escrevi o teste atual, e eu usei um suporte. E eu escrevi que a string na maneira que ele irá refletir exatamente o que está escrito aqui e o final menos diz Echo para não colocar uma nova linha no final para que esta ou dis linha bem, eco no final de no final do 1º 1 E eu também adicionaram como se os resultados fossem certos
ou errados. Então, se fecharmos, vamos dar uma olhada aqui. Sim, vamos, porque isso virou os resultados para que você possa ver que acertou este? Este, certo. Este errou, este errou. Este eles erraram. Esta turnê está errada. Ah, e assim por diante. Então, como eu estava dizendo, os colchetes simples só são bons para esses dois sinais aqui ou para o operador binário que
vimos no passado. Portanto, pode ser mais fácil lembrar de usar um único suporte para operadores de bateria. Isso é olhar para a sua causa. Esses resultados agora o quê? Colchetes duplos. Então aqui eu fiz a mesma coisa. Ecoou a corrente desde longe está escrito, e se você notar que há dois aqui que eu não estou colocando neste caso porque eles não funcionam. Então vamos executar o resultado disso. E como você pode ver que já melhor está ficando todos eles agora, se você notou esses dois aqui quando você olha para o primeiro exemplo no segundo ou realmente faltando no segundo exemplo, eles funcionam um pouco diferente. Operadores anteriores também podem ser usados da mesma maneira. Agora usamos nós fazemos o teste usando esses suportes contadores e, em seguida, eu re tentativa de teste mencionado em exemplo. Você pode ver que eles têm agora nós tentamos testes anteriores com isso. Isso faz com que os americanos e tenta uma atribuição. Mas isso funciona corretamente
, funciona bem. Isso não funciona corretamente porque ele tenta e atribuições entre um ser igual e isso é bom. Isto é bom. Então, como você pode ver, a declaração if com esses colchetes oferece resultados de sua mais como outra linguagem onde um sinal de igual simples será basicamente dada atribuição. Isso é teste para ver se eles são iguais? Eso você? O justo disso é que você é melhor para usar esses colchetes e suas
declarações if e , em seguida, você os colchetes únicos para operadores binários na próxima sessão aqui. E você espera. Desculpe. E você pode ver no curto aqui ao fazer operador binário usado colchetes simples e usar esses colchetes para fazer qualquer outro tipo de operação. Sempre um bom hábito de citar sua variável na próxima sessão, vamos olhar para a comparação de strings.
12. Para o loop: Ok, agora vamos começar a olhar para loops. O primeiro 1 que eu quero olhar o que através é o para o amor? Mais uma vez, você tem um link para a documentação aqui. A estrutura do grupo dos quatro é muito simples. Quatro itens em menos. Então é um pouco da mesma estrutura que a declaração if aqui, temos um exemplo de um loop quatro passando por uma área. Olhe para o código aqui, que você Então eu declaro uma área que é baseada separada de simplesmente número. Então, quatro itens dentro. E este é, ah, o formato para basicamente dizer ao Bash para usar todos os itens na área. Uh, fazer eco item. Então esse é um exemplo
muito, muito simples. E como você esperaria que lista cada item no loop for aqui, eu uso um loop for para percorrer o argumento fornecido na linha de comando. Vamos dizer como você iria passar pelo argumento que você colocou quando você chama o script. Então este é o formato para obter o número de argumento que foi passado para descrever. Se for igual a zero, basicamente
temos um erro, exceto um frio. Caso contrário, imprimimos o número de argumentos, e passamos por isso agora com imprimimos o número de argumentos,
e passamos por isso agora como modo
órgão. Basicamente a linha de comando da coluna de cabeçalho e tudo é espaço. Separado está sendo adicionado aos chicotes de linha de comando. Então lá vamos nós. O comprimento do argumento é três e três Argumentos que eu passei. Ah, se você perdeu que este ano é redirecionar o erro padrão para a saída padrão para
que quando avaliamos com um órgão, se houver um erro, princípio e o resultado em vez de abrir e você buffer. Mas agora eu posso tentar sem nenhum argumento aqui removendo-os e você pode ver um suprimento, uma série de argumentos. Então esta é a simplicidade de um loop for. Na próxima sessão, vou atravessar a selva com você.
13. Enquanto de loop e até a ponta: Agora vamos olhar rapidamente para o loop selvagem. Mesma coisa que você tem um link para, Ah, documentação
mais estendida no exemplo aqui eu usei um loop while para passar por um Neri eso. Mesma coisa. Declarei a mesma variável aqui. Então inicializo uma variável para zero. Eu vou pegar um número de itens na área em si. I equidade e para uma boa medida. E então é simplesmente um tempo. X é Bill O Arlen, que é o número de itens na área ecoa. E se você quiser fazer um incremento no bash, você tem que colocá-lo entre esses dois colchetes. Ah, é basicamente qualquer operação aritmética em dígitos tem que ser colocado dentro desses suportes. Agora eu estou usando o mesmo loop aqui, mas para voltar fazer um pouco de referência. E a forma como a instrução if estava trabalhando com o suporte e operação binária e
operador comum . Então o loop while é o mesmo aqui. Você vê que para usar esse símbolo, eu uso colchetes duplos. Eu posso usar a mesma coisa que qualquer uma das declarações, suporte
único e usar um operador binário para fazê-lo, também. Vamos executá-lo rapidamente apenas por diversão, e ele imprime para resultados, como estávamos esperando. Vamos rapidamente dar uma olhada no loop até. É muito semelhante ao loop selvagem, exceto que ele irá executar até os resultados do teste. Verdadeiro. Ah, em vez de enquanto o teste resulta falso ou verdade no outro sentido. De qualquer
forma, eu faço a mesma coisa. Declaro um arejado. Eu recebo o número de itens, exceto que até X é igual ao número de itens na área, eu faço loop dedo no interior. Mesma coisa para incrementar x dois. Vamos executá-lo apenas para um bom exemplo. Lá vamos nós. Ele corre como esperávamos.
14. Redirecionamento de entrada: OK, agora vamos olhar para saída de entrada, redirecionamento e loops. Ah, se você não sabe nada sobre entrada e saída de uma direção, eu recomendo que você vá para discutir aqui descritores de arquivos, redirecionamento de
soquete e substituição de processos. É explicado em detalhes lá. Aqui está um link para referência,
como sempre. Aqui está um link para referência, Uh, outra maneira de controlar loop é especificando arquivado para reedy entrada de geralmente o comando read é usado para isso, desde que entrada ou alimentado no loop. Ele continua quando ele pára de vir no loop fecha. Isso permite um script muito bacana. Quando você combina esse conhecimento com uma boa compreensão do descritor de arquivo de tipo de arquivo e socket, você pode controlar Alou alimentando dados de um arquivo em um computador remoto. Hum, esta seção aqui é se você pressionar o controle C controle Z para
avaliá-lo, ele irá imprimir seu manual de ajuda para a opção de leitura diretamente dentro do seu arquivo orig. Ok, agora, vamos olhar para o código nesta seção aqui, Então eu primeiro defini declarar variável e atribui-lhe o valor para um caminho para o nome do arquivo que não existe. Eu não criei o arquivo com o toque de comando. Em seguida, procedo a emitir um comando fino no diretório raiz. Eu faço isso porque é garantido para dar ah, erro
padrão e saída padrão. Isso seria dado um elogio? Porque alguma pasta eu não tenho permissão para acessar eso. O que está acontecendo aqui é que eu redireciono a saída padrão para um arquivo, e então eu procedo para redirecionar o erro padrão para o feed de saída padrão, que vai para um arquivo que eu defini a contagem de linha permitida para zero, e então eu começo meu Wall Comando enquanto loop foram para ler o comando sobre ele. E tudo o que Luke faz é que incrementa o acampamento de linha. Este é o redirecionamento de entrada acontecendo aqui. Eu coloquei esse símbolo e o nome do arquivo e ler lerá linha por linha que o seguiu
até que ele esteja vazio. Uma vez feito isso, ele vai imprimir ou acampar. Então eu limpo. Também não precisamos criar um pote que possamos criar. Podemos usar substituição de processo que também é descrito com mais detalhes na classe que eu
mostrei anteriormente, então dissemos que a contagem de linha para zero o loop while permanece o mesmo, começamos nosso redirecionamento de entrada. Mas ao invés de dar um nome de arquivo, damos a ele uma substituição de processo, e isso dará os mesmos resultados. Agora, vamos ver os resultados desse comando. Se você executar o comando fine pela primeira vez, pode
demorar um pouco antes que os resultados apareçam. - Eu. É porque a busca foi descontada. Ok, então eu tenho as duas informações aqui. E se eu quiser, talvez você possa descobrir por que os números de linha não são os mesmos.
15. Quebre e continuar: Bom dia. Vamos terminar rapidamente nossa seção de loop aqui. Vamos terminar isso com a explicação da pausa do elogio e continuar eso como geralmente tem um link de referência. Ótimo Aqui vamos primeiro olhar para um comando break. É usado para parar um pouco antes de ser normal. Terminando eso ele está procurando código aqui rapidamente disco Dhere Você quer exportá-lo Não avaliado porque requer entrada do usuário. Então eu declaro processo de pessoa função entrar e de lá variável articular e meu lugar Todo o comando que vai ser recebido como argumento na variável cmd E então eu avaliei e voltei para retornar valor eso aqui. Se você digitar qualquer coisa, ele vai chamar o PERL diz comando com a entrada que você deu Se recebermos um
valor de retorno acima de zero, ecoamos um erro. Se você entrar sair. Demonstramos o comando break aqui Então eu vou exportar esse código pressionando
controle você controle C controle vnt e de lá eu sou capaz de fazer lá nós vamos Ou se eu apenas colocar ls ele importa transferir todos os comandos que eu estou realmente dando a ele. E se eu colocar quebras de anúncios. Diluir rapidamente. Vamos olhar para continuar o comando aqui para continuar uma declaração, retomá-lo aeração por um tempo e até loop Eles também agem da mesma forma para um tremoço seleto que será visto mais tarde. Se você usá-lo em um loop for para controlar variável Tome o valor do próximo elemento
na lista quando você usá-lo em um tempo ou até loop ele retomar com o mesmo loop. Não foi assim. Vou dar um exemplo aqui. Este é um comando continue usado em um loop for. Então eu declaro em Eri eu passar por isso se x acaba sendo a posição número três Isto é quando enviamos continuar comando e caso contrário é X igual a X velho é normal. Você vai ver o final de Lupul? O que quer dizer com modificação? Aqui? Está consertado que, uh E como você pode ver, chegamos à nossa terceira posição e enviamos para continuar elogiando, mas tudo continua funcionando normalmente. Agora vamos dar uma olhada daqui a pouco. Venha aqui, age de forma diferente. Então eu declarei que a área que coloquei meu X é igual a zero. Começo a passar por isso se acertar na posição três que mando para continuar. Louvar. Se você recomendar isso aqui, você vai acabar com um loop infinito porque quando o continuar será enviado, X ainda será igual deleite não irá movê-lo para a próxima posição. Então eu coloquei que ousam a incriminação de X para que ele possa continuar Se você
não fizer , Se você recomendar a incriminação de ovos e você avaliá-lo em modo órgão, eu vou mostrar-lhe aqui. Vamos fazer isso. Então vamos entrar em comentar isso. Então, se eu tentar executá-lo agora, a execução não será concluída. E parece menos. Se o iMac for travado, basta pressionar o controle g para sair do teste de avaliação ou em qualquer lugar eso que mostra a diferença e continuar entre o loop for e um tempo, ou até que termine nossas aulas ou seção em loops. No próximo vídeo, vamos começar a ver como você passa argumentos para, uh, seu script
16. Argumentos de linhas de comando: Bom dia. Agora vamos dar uma olhada em como passamos argumentos para o seu roteiro. Ah, passando argumentos para o seu script, onde ele é muito semelhante a um argumentos de passagem para uma função que ele pode ser acessado a
partir de Dollar Juan, Dólar dois e assim por diante. Então vamos primeiro dar uma olhada e um exemplo literal aqui, passando por uma lista de,
ah, ah, argumento de linha de
comando com um loop de quatro. Então eu abri com ela saco e, em seguida, quatro eu e este é montado para usar para agir, testar todos os argumentos em um loop para fazer eco dólar. Eu fiz isso um roteiro muito simples e um modo de órgão aqui. Este é o argumento leva que eu passo e eu vou passar mais dois argumentos que eu vou avaliar. E como você pode ver, meus são Guan e todos os argumentos que eu passei na linha de comando. Então essa é uma maneira simples de passar 30 argumento de linha de comando. Seria A para loop Vamos dar uma olhada em fazê-lo com um eso selvagem. Eu inicio zero extra. I atribuir todos d argumento linha de comando para uma área variável, chamar nossos ovos, e eu faço o meu habitual enquanto X está abaixo do número off elemento ea área argh ecoou M e incremento DX. Então, se eu imprimir os resultados e você pode ver que minha opção de linha de comando ou aqui embora como você está? E eles são impressos cada uma em uma única linha na próxima sessão, ou indo para ver como você pode implementar argumento estilo Lennox em seu script, quero dizer,
como, como, curta e longa Combine opção que, Diga que você faz É Dash l oito eso Vamos olhar para isso na próxima sessão aqui.
17. Args na Linux parte 1 (o espaço separado): Então, como implementamos argumentos de estilo Lennox em seu próprio script? São três formas comuns de o fazer. Vamos primeiro olhar para o 1º 1 para o espaço opção Separados. Você chamaria seu roteiro com o método “Fall Away Met”. Uh, você chamaria o nome do script, e então você poderia passar em uma pequena opção. Permite que um traço A ou Dashti ou Dash V. Se a opção tem um valor, você colocaria um espaço no valor. Ou você pode usar o mesmo método, exceto com nomes de opção longos que o espaço e o valor. Se precisar de um. Este método não encerra todos os manipuladores. Combinar opção permite um traço L oito para fornecer duas opções. Vamos dar uma olhada no código aqui. Eso aqui, eu declaro três variável. Agora, esta técnica usa uma técnica de valor chave. Ele lidar com a opção curta e longa da forma como este programa Então eu iria criar um loop de quatro como este ano s O. Isso significa que, enquanto o número de argumentos na lista argumento fornecido está acima de zero, continuar. Atribuímos o número um à chave. Será que nós verificamos o Dickey no caso de contra todos estes opção Aqui nós fornecemos uma
opção curta do que a montagem de pizza que significa ou na declaração caso. Então eu também poderia fazer. E isso é um fornecer um Não para que seria assim que tornaria essa opção disponível e bom para uma linha de comando. Então eu atribui a opção de valor para o número dois. Então, quando você faz um loop como este, ele sempre será uma forma de valor chave de vê-lo. O que? Bem, onde a primeira parte é a opção. A opção longa curta que vai para a chave, que é o número um e o número dois se torna o valor da própria opção. Uma vez que tenhamos usado essas chaves e valor, temos que mudar o número de argumentos que ainda estão em ou menos para usar. Basicamente, este aqui, então eu faço uma mudança para que significa que vai mudar minha lista de argumentos por
remover para 1º 1 na lista cai no próximo para entrar no lugar. Então, a mesma coisa para Dash File. Agora, Dash D não é uma opção que requer um argumento. Apenas forneça ou não. E assim só mudamos por um. E isso aqui é para qualquer outra opção que não sabemos sobre gravação. Não sabemos a opção, , e depois fornecemos o comando Shift. Depois de tudo isso feito, nós simplesmente imprimimos o valor de nossas três opções que configuramos. Então vamos ver quais são os resultados deste ano. Então, mais uma vez, passei meu argumento de linha de comando por esta parte aqui, tudo antes do redirecionamento do padrão, nunca. Então, se eu fizer assim, vê aquilo? O argumento de passagem e teve todas as minhas opções. Agora vamos buscar o fundo e fornecer uma opção desconhecida. Mas isso está me dizendo que não sabe a opção. Dash, coma agora. Se eu fosse fazer um erro e fornecer uma opção para isso, eu acho que iria conter um valor, mas não é no caso. Ele o vê simplesmente como uma opção, e há um erro porque ele não sabe o que fazer com ele. Agora. Se eu fosse tentar um sobre uma opção combinada, você vê que ele não reconhece essas duas opções neste momento. Então é assim que você implementaria um espaço separado Lennox dizer lista de argumentos na próxima sessão, vamos olhar para uma maneira diferente um método separado igual.
18. Argens de Linux no de a parte 2 (de seção): Então, agora vamos olhar para um método diferente. Vamos olhar para o igual separado. Ah, você
acha? Tal é bastante semelhante ao espaço um, exceto que em vez de um espaço que colocamos sinal desigual, este método não termina todos combinam opção também. Então vamos dar uma olhada no código aqui é um pouco diferente. O loop é diferente neste caso para I e isso significa que todo o argumento passou através da linha de
comando e, em seguida, fazemos um caso sobre o I. E se você olhar para as opções que temos são opção curta são sinal de igual e, em seguida, um
símbolo de estrela . Então, basicamente, eu vou conter toda a sua opção de traço igual a, eu termino. O valor será incluído dentro que I variável e para baixo primeira linha aqui nós realmente extrair o que vem após o sinal de igual e atribuí-lo ao nosso valor. Então só precisamos mudar por uma mesma coisa para o arquivo dash e a mesma coisa para se não
soubermos as opções. Então, vamos executar rapidamente o script e ver os resultados feitos passando assim como você, ele funciona exatamente como estávamos esperando. Funciona exatamente como o espaço separado, exceto que colocamos sinal desigual. Mas a estrutura do código é ligeiramente diferente. Na próxima sessão, vamos olhar para usar get ups bash construído em que desta vez faz tomar uma opção combinada.
19. Argens de Linux parte .1 (getopts): Agora vamos olhar para a nossa terceira opção para implementar o argumento do estilo Lennox com a temperatura Bail Bail. Obter oficial elogio primeiro levantar-se. Onley lidou com opção curta. Não há nenhuma opção longa nele Mas ele também lida, mudar ou combinar opção como traço V f ou L s Dash L. A. Há um link de referência diferente aqui. Apenas rastejou até o bilhete de “get ups”. Se você correr, homem e então você escreve get opt no s Não é a mesma coisa. Assim, os usos obtém-se nome String e argumentos entre colchetes aqui. Então vamos primeiro dar uma olhada em mais detalhes sobre o uso. Então levante-se é uma bash Bilton up string continha a opção caracteres dedo do pé olhar, por exemplo. Ou se G significa que estamos procurando as opções curtas que é devido pergunte FSG ou qualquer combinação. Então vamos dar uma olhada no código de exemplo aqui. Então, usando um loop while enquanto começa ups
em, uh, aqui você coloca as opções que você está procurando e esta é a variável que vai ser contida. Então, basicamente está passando. A primeira opção vai colocar o nome da opção dentro de O P. T. e executar um eco. Então vamos ver os resultados aqui para que você possa ver que eu coloquei meus argumentos de linha de comando aqui, e ele os vive na mesma ordem. Se eu os mudasse assim, mudaria os resultados. E se eu estivesse no meio de um, isso não mostra. E o que acontece se eu colocar outro que não estou procurando? Reclama-se de uma opção ilegal. Agora. Se um caractere for seguido por uma coluna, espera-se que
a opção tenha um argumento. Nesse caso, Get Ops reproduz o argumento na variável,
e é sensível a maiúsculas e minúsculas. O P. T A R G Kate. Não, vamos dar uma olhada no código rapidamente aqui. Então eu declaro alguma variável para jogar. Agora, neste exemplo aqui, espera-se que
a opção f tenha um argumento. Então estamos procurando a opção O g. Fique sozinho e F deve ter um argumento. Esta é a nossa estrutura chave aqui, onde atribuímos valor a 20 p. T a r g. Quando é um aviso, e então nós imprimimos nossa opção Então vamos dar uma olhada aqui se eu fizer o nosso
argumento de linha de comando que eu sou enviando para o bloco de código que é removido apenas para que possamos ver o novo ar que você vai e você pode ver nossas opções aqui. Agora vamos mudar isso e vamos colocar um espaço para a opção dash F. Não faz diferença. Ele ainda o coloca, e você percebe que não há espaço no meio daqui agora. Se eu fosse em meio ao argumento aqui, ele nos lança um erro que a opção requer um argumento. Vou substituir o argumento onde ele vai aqui. Nós o executamos, e há nossas opções. Toda vez que é invocado, obter UPS reproduz a próxima opção em uma variável e o índice do próximo argumento a ser processado em o p. T i N D. Essa é uma variável mais uma vez, sensível a maiúsculas e
minúsculas. Embora essa variável seja B será definida como uma toda vez que o script Shell estiver envolvido, ela não se redefinirá automaticamente depois. Se você for chamar get ups várias vezes, essa variável tem que ser redefinida manualmente. Então vamos dar uma olhada no exemplo aqui. Então eu declaro minha variável para jogar e eu eco o que a variável OPD I Andy? Está definido. Quando o script começa, eu passo pelas opções e eco essa variável toda vez que passamos pelo loop. Então você vai vê-lo subir Agora nós estamos passado que loop while e eu dar-lhe a mesma variável aqui. Agora estamos tentando refazer o mesmo loop sem redefinir a variável toe um e então vamos ver o que acontece. Então vamos ver os resultados aqui. Minhas opções são as mesmas. Eles são antigos, válidos, então você pode ver que começamos em um. Então vamos para depois vamos para três e depois vamos para cinco porque o último tem uma opção. Agora estamos tentando refazer o mesmo loop sem redefini-lo. E você pode ver que chegamos ao último eco sem fazer nada aqui no final enquanto Lupus terminar porque nós não redefinimos. Então lembre-se, é sempre um bom hábito. Uma vez que você terminar de usar upto get ups, sempre redefinir essa variável de volta para um
20. Argens de Linux Parte 2.2 (getopts de erro): não manter, vamos olhar para obter ups e erros por padrão, mensagem de
erro ou impresso com uma opção inválida ou argumento de opção de bagunça é encontrado. Então o script a seguir não fornece um argumento para a opção mina para a opção F. Como você pode ver aqui atrás, o código é muito semelhante ao que vimos antes Nós mostramos que é esperado para ter, ah, argumento, e não tem. Então vamos executar descript aqui e você pode ver que temos,
ah, ah, erro reclamando sobre o argumento necessário faltando se o primeiro caractere e acima string como um modo de silêncio de coluna é usado. Então aqui temos o mesmo código, exceto que comecei com uma chamada aqui e as opções são as mesmas. Estou faltando os argumentos para a opção F. Então, se eu executar este script aqui, ele não reclama sobre isso. Se a variável o p. T errar exceto zero, nenhuma mensagem será impressa mesmo que você não use o voto silencioso. Então eu estou fazendo o mesmo erro novamente. Eu não tenho modo silencioso, mas eu disse. Petey,
erre para zero. Petey, Então isso é executar esse script aqui. E mesmo que eu estou faltando a opção e eu não sou Ah, no modo silencioso, ele ainda não impresso mais perto quando uma opção inválida isse encontrou o valor teria uma pergunta Mark é colocado no nome argumentos upped é unset e um diagnóstico mensagens impressas por get ups. O bloco de código fornecerá uma opção inválida Dash X, que podemos ver aqui. Agora o código está de volta ao mesmo que o tínhamos, exceto em uma declaração de caso. Se o meu P
T. T. é igual a uma pergunta mental, isso significa que encontramos uma opção inválida. Então vamos executar o script aqui e agora vemos a mensagem de erro impressa por get ups e a mensagem que eu imprimi na declaração de caso. Então, e se get ops está no modo silencioso, cima alvo é definido para o caractere opção opção encontrado. Eso dará um exemplo rápido aqui. Olhe para o código rapidamente, então é o mesmo código. Ainda assim, estou no modo silencioso quando encontrei o erro. Então os valores um ponto de interrogação de OPD eu vou imprimir O p t a r g, e você vai ver o que queremos dizer com isso. Então você vê, eu tenho uma opção inválida. Ovos. É o seu valor. Ele armazenou duro. Se um argumento necessário estiver ausente e get ops não for silencioso, um ponto de interrogação seu lugar no nome e opt argumenta mensagens de início e diagnóstico impressas. Então, no caso de mesa aqui, OPD err é definido como zero. Não estamos em modo silencioso. Vou encontrar essa pergunta. Mark e eu vamos imprimir a mesma variável O P t e o P. D a R g. Então vamos ver os resultados desse argumento ausente detectado. Obter também exibir uma mensagem de erro Então você vê que não há nenhuma seção interior valor aqui. Último ponto sobre obter ops um erro se um argumento necessário está faltando e get ups é silencioso. Um nome colocado colonise acima Argus definido para a opção encontrada e mensagem de diagnóstico morrendo não é impresso. Então vamos olhar para isso para que mesmo certo o suficiente, eu colocaria este dedo do pé. Um só iria suprimir as mensagens de erro, mas estamos no modo silencioso, então eu olho ou não o ponto de interrogação, mas uma coluna e eu imprimir as mesmas mensagens de erro como antes para que você possa ver
argumento ausente detectado get obsoleto. Não este jogar uma mensagem de erro, e sabemos que é a opção traço F que requer no argumento. Então, na próxima sessão de aula, vamos olhar para fazer menus com Cilic embutido para permitir que você construa o que é chamado de interface de usuário de texto T u wy.
21. Crie menus com SELECT: bem-vindo nesta sessão aqui vamos aprender a fazer menus com Selig construído no comando. Uh, não. Isso descrito nesta seção aqui produzem scripts interativos, então ele precisa ser executado um terminal. Você precisa exportar para código. Uh, a seleção construído e torna mais fácil de exibir e menu de diretiva para o usuário em um destruidor de interface de
linha de comando . A estrutura é selecionar palavra em menos e, em seguida, fazer o que você precisa fazer e, em seguida, feito. Então é meio que um tempo. Lista de loop é expandida e uma lista de itens foi gerada a partir dele. A expansão é impressa para erro STD. O descritor de arquivo número dois devido à natureza interativa do descritivo deve ser exportado. Então vamos dar uma olhada no código aqui. Assim, o script a seguir lhe dará um menu de todos os diretórios em seu diretório pessoal . E depois de fazer uma seleção
, será este todos os arquivos nesse diretório. Então o que está acontecendo é antes de tudo, nós fazemos um loop, então nós selecionamos o nome aqui vai ser o que ela era uma variável. Esta é a nossa lista. Então, esta primeira seção irá colocar todos os diretórios em seu diretório pessoal nessa lista. E então nós também adicionamos o prêmio extra Quit. Começamos o nosso ciclo de fazer. Agora. Se a variável i r é igual a sair, saímos. Caso contrário, nós vamos é o conteúdo. Então vamos exportar disco devido ir para um console e este é um seleto simples. Então este é todo o conteúdo do meu diretório pessoal. Diretórios mais antigos. Então lute, selecione três. Ele dura o conteúdo do meu diretório de documentos. E se eu tivesse 14, desistiria. Descrever sub-menus aninhados instrução Selecionar cria sub-menus. Então, vamos olhar para isto aqui. Então começamos a mesma coisa, mas primeiro aqui nós empurramos o diretório ou home. Ok, Push D é uma alternativa melhor para mudar o diretório no script. Ok, Bash mantém uma pilha de drogas de diretórios antigos. Então o que estamos fazendo é que estamos empurrando seu diretório home no topo dessa pilha. A razão pela qual redirecionar uma barra mortes nacional é porque cada vez que você chamar Posey ou Pop D, ele irá imprimir a pilha de diretórios para DSTs. Então, colocamos nosso próprio diretório para o topo da pilha e, em seguida, Select Star. Nenhum apenas diretórios todos os arquivos e nós tínhamos desistido. A mesma coisa aqui. Se encontrarmos desistência, saímos. Se é um diretório, nós empurramos um diretório. Em cima dessa pilha que selecionamos para sub d i r estrela e de volta. Ok, se o cabelo do submarino está de volta, nós quebramos o laço. Então nós caímos de volta em nosso loop pai aqui. Se for um arquivo, imprimimos um conteúdo. Tenha cuidado com qual, enquanto você seleciona para exemplos e arquivo ou arquivo binário, pode imprimir um longo, longo tempo. Se é um diretório, Bem, é o conteúdo desse diretório? Este ano não deve acontecer. Então, até revidarmos, ele quebraria. E então ele iria estourar o diretório que nós empurramos bem aqui. Então, se não é um diretório, se é um arquivo, simplesmente não podemos o conteúdo dele. E no final dele re pop nosso próprio diretório re empurrado para o topo. Então, vamos exportar. E isso seria Ah, vamos ver, isso é o ano passado. Seleciona sub. Certo, então vamos ver o manuscrito Select Sete. Então este é todo o meu conteúdo dentro do meu diretório pessoal. Então, se eu vender como 16 testes que é o arquivo H destino, ele imprime o conteúdo. Se eu empurrar para baixo sem nada, simplesmente reimprime o mesmo Select Luke. Então, se eu fosse entrar em três meus documentos, eu entrei nesse diretório e ele imprime seu conteúdo. Então, se eu verificar o teste, é h lá. É um arquivo diferente. E se eu olhar para outro diretório número quatro, ele me imprime o conteúdo. Mas eu ainda estou no mesmo ciclo. Então eu fresco sete para trás e eu estou de volta no meu diretório home, 20 para sair eo script é feito. Então é isso para o básico e classe iniciante para introdução de scripts no Bash na próxima sessão, eu gostaria de falar sobre um projeto que eu gostaria que você tentasse.
22. O projeto: Agora vamos falar sobre um projeto para praticar praticamente tudo o que você aprendeu. O que eu proponho que você faça é que eu proponho que você use scripts bash para criar um gerenciador de
arquivos ah muito simples . Ele não precisa ter muitos recursos. Você pode escolher o futuro como quiser. E à medida que avançamos em direção ao tópico avançado Mawr, vamos elaborar esse script de gerenciador de arquivos. Então eu incluí uma versão duas desse gerenciador de arquivos. Ambos também não têm a mesma funcionalidade. Eso vou descrever a forma como ele é inserido no modo de ordem aqui, por isso faz sentido para você. A primeira seção do código que vemos aqui é chamada de exportação de script. Se você quiser exportar essa versão do farm manager, você vai nesse código e você pressionar a função de exportação Controle você controla C controlar a profundidade, então isso irá exportar toda a camada. Vamos olhar dentro dela. Na verdade, não há código lá. A única coisa é que este inclui referência à outra seção de código. A razão pela qual ele fez assim. É porque este é bastante um modo orig script interativo não é bom. É bom em avaliar. Mas é onde é mais complexo quando você quer fazer scripts interativos. Então, para evitar erros cada uma da próxima seção ou cada uma da função. Ok, então você pode olhar para cada um deles e muito, muito, muito separado de maneiras isoladas. Eles não podem ser avaliados. Eles não podem ser exportados. Se você quiser exportar sua exportação, esta aqui,
que se referirá a cada um dos outros casacos, eu não vou passar exatamente como ele é feito, que você ouve. Se você tem uma pergunta que você quer elaborar sobre isso, junte-se a mim no meu grupo no Facebook e poste sobre isso. OK, esta é outra versão do “Descript”. Ele usa Mawr para selecionar eso construído em função que falamos em uma das versões anteriores . Ele também tem um recurso diferente onde é permitido renomear um arquivo. Então eu vou deixar você passar por esses códigos aqui, dar-lhe algumas idéias e criar um script para fazer um gerenciador de arquivos simples não precisa ter um monte de recursos. Se precisares de ajuda,o
nosso esclarecimento junta-te a mim no meu grupo no Facebook. Se precisares de ajuda, Se houver dúvidas sobre minhas funções. Terei muito prazer em descrevê-lo para você. Mas eu gostaria de deixá-lo um exercício seu próprio julgamento por um pouco e postar seu projeto na minha escala. Seção do Projeto Cerda Obrigado por seguir esta aula e, uh, espero que você se junte a mim em quaisquer aulas futuras para Lennox.