Bash idiomas variáveis ​​avançados para gerenciamento de sensibilidade ao caso

Bash idiomas variáveis ​​avançados para gerenciamento de sensibilidade ao caso

Sempre que trabalhamos com cordas textuais, mais cedo ou mais tarde a questão do caso surge. Uma palavra precisa ser totalmente maiúscula, totalmente minúscula, com uma carta capitalizada no início da palavra ou frase, e assim por diante.

Um idioma é uma expressão de linguagem natural de uma simples tarefa de programação. Por exemplo, no sono 10 comando (que pausa o terminal um está trabalhando por dez segundos), a palavra dormir é uma expressão de linguagem natural do que é uma construção de codificação baseada em tempo, desenvolvida no pacote de software Bash GNU CoreUtils.

Existem vários idiomas especiais de variável (i.e. Sufixos que podem ser adicionados a um nome de variável, indicando o que gostaríamos de fazer com uma determinada variável), que pode ser usada em Bash para fazer mais facilmente esses tipos de conversões em tempo real, em vez de ter que usar, por exemplo, o fluxo sed Editor com uma expressão regular para fazer o mesmo.

Se você estiver interessado em usar expressões regulares, dê uma olhada nos nossos regexps Bash para iniciantes com exemplos avançados de Bash regex com exemplos de artigos!

Isso torna o trabalho com variáveis ​​que precisam de modificação de casos, ou se Teste de declaração muito mais fácil e oferece grande flexibilidade. Idioms podem ser adicionados diretamente dentro do se declarações e não precisam empregar uma subshell com sed.

Embora a sintaxe pareça um pouco complexa para começar, depois de aprender um pouco de truque de apoio mental para lembrar as teclas certas, você estará bem no seu caminho para usar esses idiomas no seu próximo script ou script de uma linha na linha de comando na linha de comando!

Neste tutorial, você aprenderá:

  • Como usar o ^, ^^, , e ,, Bash Idioms de sufixo variável
  • Como usar uma expressão regular [] Idioma de alcance em combinação com estes
  • Como usar o ^ e , Idiomas diretamente de dentro se declarações
  • Exemplos detalhados exemplificando o uso de ^, ^^, , e ,,
Bash idiomas variáveis ​​avançados para gerenciamento de sensibilidade ao caso

Requisitos de software e convenções usadas

Requisitos de software e convenções de linha de comando Linux
Categoria Requisitos, convenções ou versão de software usada
Sistema Independente da distribuição Linux
Programas Linha de comando Bash, sistema baseado em Linux
Outro Qualquer utilidade que não esteja incluída no shell bash por padrão pode ser instalada usando sudo apt-get install utility-name (ou yum install para sistemas baseados em redhat)
Convenções # - requer que o Linux -Commands seja executado com privilégios de raiz diretamente como usuário root ou por uso de sudo comando
$-exige que o Linux-Commands seja executado como um usuário não privilegiado regular


Exemplo 1: Fazendo variáveis ​​completas em maiúsculas

Vamos começar com um exemplo mostrando como imprimir uma variável como maçaneta:

$ Var = "Faça -me maiúsculo"; echo "$ var ^^" Faça -me maiúsculas 

Primeiro definimos a variável Var para Faça -me maiúsculo. A maneira como fizemos isso é usando ^^ No final do nome da variável - um sufixo, um idioma bash, para dizer ao intérprete interno do Bash para substituir nosso texto por sua versão superior.

Observe que sempre que se define uma variável, um usará o Var = Sintaxe, deixando de fora a variável líder ($) Bash idioma. Usos subsequentes, que não são reinicializações por si mesmos, usarão o $ sintaxe. Portanto, o eco usa $.

Você também pode ver e sendo usado em torno do nome variável. Embora isso não seja estritamente necessário:

$ Var = 1; eco $ var 1 

É altamente recomendável, e eu, pessoalmente, também recomendo, para sempre citar corretamente as variáveis, pois evita erros e até questões como onde não está claro para o intérprete de bastidores bastidores quando uma variável termina:

$ Var = "a"; eco "$ vara" 

No primeiro exemplo, o intérprete de bash vê um nome de variável começando ($) e continua lendo até atingir um espaço, como pode ser visto aqui:

$ Var = "a"; eco "$ var a" a " 

Aqui tivemos que apresentar um espaço apenas para fazer nosso eco funcionar corretamente.

Em outras palavras, em nosso exemplo anterior, o nome variável que Bash vê é Vara E é incapaz de dividir/ver onde a variável termina e o restante das partidas de string a saída ou reinicia. Vamos comparar isso com variáveis ​​adequadamente encapsulantes com e :

$ Var = "a"; eco "$ var a" aa 

Aqui não são vistos problemas; está claro para o intérprete de festa que $ Var é a variável e a é o texto a seguir depois, tudo graças a encapsular adequadamente nossa variável.

Isso também se traduz de volta, de maneira forte, para usar o especial ^^ Idioma e outros idiomas de batalha. Vamos exemplificar isso:

$ Var = "Faça -me maiúsculo"; eco $ var ^^ me faça manchas ^^ $ var = "Faça -me maiúsculo"; eco "$ var ^^" Faça -me maiúsculas ^^ 

Nesse caso, Bash é capaz de ver que gostaríamos do Var variável a ser impressa, embora interprete ^^ como texto padrão. Como pode ser visto claramente a partir deste e exemplos anteriores, é uma prática recomendada sempre rodeia os nomes de variáveis ​​com e .

Exemplo 2: tornando as variáveis ​​completas minúsculas

Agora que vimos como fazer uma maiúscula variável completa usando o ^^ idioma, vejamos como alterar variáveis ​​completas para minúsculas usando o ,, idioma:

$ Var = "me faça minúsculo"; eco "$ var ,," me torne minúsculo 

É um idioma de sintaxe interessante para usar ,, como sufixo para a variável, mas funciona corretamente como mostrado.



Um pouco de truque de apoio mental para lembrar estes

Uma ótima maneira/método para lembrar tudo é confirmar ou imaginar visualmente o que precisa ser lembrado. Se você pode adicionar algumas construções mentais a isso, como fazer relações com outras coisas, é provável que você se lembre da mesma próxima vez.

Isso é dar uma olhada no seu teclado físico e, se você estiver usando um teclado querido como eu, você verá que ^ é Shift-6 e ',' fica ao lado do m. Como isso ajuda?

Em primeiro lugar, o 6/^ a chave está no topo e o , A chave está no fundo. Em seguida, o , A chave também é a do fundo mais próximo Não-alfabet-caractere para o 6 chave. Por fim, ambas as chaves estão do lado direito do teclado, lembrando que esses idiomas são um sufixo, não prefixo, para uma variável

Depois de confirmar visualmente isso uma ou duas vezes, ele provavelmente ficará muito bem na memória e você poderá usar esses idiomas no seu próximo script ou uma linha sem ter que referência novamente na sintaxe.

Exemplo 3: Alterar letras específicas

Também podemos fazer uma letra específica em maiúsculas:

$ Var = "ababab cdcdcd"; echo "$ var ^^ b" ababab cdcdcd 

Ou minúsculas:

$ Var = "ababab cdcdcd"; echo "$ var ,, c" ababab cdcdcd 

Existem dois gotchas/limitações aqui. Em primeiro lugar, devemos ter certeza de especificar o caso certo de carta para começar. Assim, especificando uma substituição minúscula para a letra c não funciona:

$ Var = "ababab cdcdcd"; echo "$ var ,, c" ababab cdcdcd 

Como simplesmente não há minúsculas c No texto, há apenas C (maiúsculas), e isso funciona bem como o exemplo mostrado acima do último.

Também não podemos especificar várias letras usando um desses formatos presumíveis, mas não trabalhadores:

$ Var = "ababab cdcdcd"; echo "$ var ,, cd" ababab cdcdcd $ var = "ababab cdcdcd"; echo "$ var ,, c ,, d" ababab cdcdcd 

A maneira de fazer isso funcionar corretamente é usar o formato de expressão regular de [… Lista de seleção…], do seguinte modo:

$ Var = "ababab cdcdcd"; eco "$ var ,, [cd]" ababab cdcdcd 

Iniciando a frase com um caráter maiúsculos ou minúsculos

Alterar apenas a primeira letra também é possível:

$ Var = "ababab cdcdcd"; echo "$ var^" ababab cdcdcd $ var = "ababab cdcdcd"; echo "$ var," ababab cdcdcd 

Aqui usamos um único ^ ou , Para tornar a primeira letra em maiúsculas ou minúsculas.



Usando essas expressões de sufixo variável de bash de dentro de dentro de declarações if

Também podemos usar esses idiomas variáveis ​​de sufixo variável diretamente de dentro de se declarações:

$ Var = "abc"; se ["$ var ^^" == "abc"]; então eco 'combinado!'; mais ecoar!'; FI correspondente! 

Aqui temos uma variável Var com valor abc. Em seguida, dentro do se declaração, mudamos o conteúdo da variável, dinamicamente, em abc usando $ Var ^^ Como nossa primeira string de comparação na se declaração. Em seguida, comparamos com abc E temos uma partida, provando que nossa substituição embutida à maçaneta funcionou.

Isso é muito mais simples do que iniciar uma subshell e fazer o mesmo usando sed e uma expressão regular:

$ Var = "abc"; se ["$ (echo" $ var "| sed 's | [a-z] | \ u & | g')" == "abc"]; então eco 'combinado!'; mais ecoar!'; FI correspondente! 

O \VOCÊ& nisso sed a instrução pode ser lida como 'Altere qualquer captura (feita por [A-Z] e referências de & em \VOCÊ&)para a mancha (\ U ') equivalente. Compare a complexidade desta solução para a anterior.

Outro exemplo se

$ Var = "abc"; se [["$ var ^^ b" == * "b" *]]; então eco 'combinado!'; mais ecoar!'; FI correspondente! 

Neste exemplo, mudamos o texto abc para abc usando $ Var ^^ b conforme descrito anteriormente (apenas a mancha b). Então usamos uma comparação que tem um asterisco à esquerda e a direita da letra B. Isso significa que estamos procurando ... qualquer string ... seguida por B Seguido por ... qualquer string ... (observe que também se pode deixar o asterisco inicial ou final para combinar sentenças começando ou terminando com B respectivamente).

Conclusão

Neste artigo, exploramos as expressões de sufixo variável da Bash ^, ^^, , e ,,. Voltamos como eles podem ser usados ​​para substituir strings às suas variantes superiores e minúsculas e como trabalhar com uma ou mais letras individuais, incluindo fazer a primeira letra em maiúsculas ou minúsculas.

Também exploramos como usar essas expressões idiomáticas mais de dentro do Bash IF declarações. Finalmente, fornecemos um truque de suporte de memória proposto para lembrar o que os personagens podem ser usados ​​e onde, como idiomas bash para substituição superior e minúscula do texto.

Deixe -nos um pensamento com seus comandos de substituição de estojo de texto mais legais! Aproveitar!

Tutoriais do Linux relacionados:

  • Script Bash: pause o script antes de prosseguir
  • Bash Regex avançado com exemplos
  • Gerenciamento de processos de fundo bash
  • Multi-thread Bash Script e Gerenciamento de Processos no…
  • Bash Loops com exemplos
  • Variáveis ​​de bash especiais com exemplos
  • Cronometrar seus scripts e procedimentos de bash de dentro do código
  • Bash regexps para iniciantes com exemplos
  • Compare string em Bash
  • Variável correta análise e citando