Bash idiomas variáveis avançados para gerenciamento de sensibilidade ao caso
- 1520
- 343
- Spencer Emard
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 dentrose
declarações - Exemplos detalhados exemplificando o uso de
^
,^^
,,
e,,
Requisitos de software e convenções usadas
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
- « Crie redirecionar e reescrever regras para .Htaccess no Apache WebServer
- Como ler e criar arquivos CSV usando Python »