O que é referido acima como baldes é o que chamamos de variáveis na maioria das linguagens de programação. Além disso, construindo para o conceito básico de uma variável, um conceito que chamamos de digitação é introduzido.
A digitação é um nome para o comportamento esperado de armazenamento e atribuição de uma variável. Então, como isso se parece quando retornamos a baldes?
No mundo do pequeno balde, criamos para nossos programas, os baldes têm nomes. É isso.
Agora, suponha que nossos programas não tenham o luxo de ter um número infinito de sacolas Jetson à sua disposição para usar como baldes. Antes de um balde ser nomeado e preenchido com seu conteúdo, o programa deve decidir a forma e a constituição de cada balde que toca. Eu sei que parece um pouco exagerado, mas é um mal necessário. Todos os baldes estão vinculados pelo seu tipo.
Como isso se parece quando retornamos ao Bash?
Funções, matrizes e strings são armazenadas em variáveis. Bash usa o que chamamos de atributos para sinalizar mudanças nos comportamentos na tarefa. Apesar de haver um sistema para modificar o comportamento da atribuição variável, quando tudo se resume a isso, os valores são armazenados em variáveis como strings.
Em Bash, um programa vive para colocar strings em variáveis e nomeá -las para uso posterior. Essas cordas estão disponíveis para manipular durante toda a vida do programa. O programa vive para manipular strings.
Aqui vamos abordar a manipulação de cordas da Bash na respiração e o máximo possível de profundidade para estar acessível a leitores de todas as marcas e formas. Leia.
O que é manipulação de string em Bash
A manipulação da string é uma operação em uma string alterando seu conteúdo. Em Bash, a manipulação de string vem de duas formas: manipulação de cordas de bash pura e manipulação de string através de comandos externos. Aqui vamos tocar nos dois tipos de manipulação de cordas.
Suponha que tenhamos uma variável em Bash segurando uma corda que desejamos manipular a string nomeada. No caso de que mais de uma sequência existe, nomeamos a string strings, string2,… Além disso, podemos optar por nomear uma string algo mais significativo do que string para promover a compreensão do conteúdo da string e o uso pretendido.
Strings concatenados - listando strings em uma string
Em Bash, a maneira mais fácil de concatenar strings é listar strings em ordem. A string resultante é uma nova string que contém todas as seqüências listadas.
$ string1 $ string2…
Exemplo: String concatenação listando strings em string
String = "One";
string2 = "dois";
String3 = $ String $ String2;
echo $ string3
Saída
um dois
Listando seqüências de strings em uma matriz
Em Bash, outra maneira de concatenar strings é listar strings em uma matriz e usar a expansão dos parâmetros para expandir a matriz na sequência concatenada. No entanto, diferentemente do exemplo acima, a remoção de elementos de matriz de espaço em branco pode exigir trabalho extra.
Array ($ strings $ strings2…)
Exemplo: Concatenação da String listando strings em uma matriz
strings = ("um" "dois");
eco $ strings [@]
Saída
um dois
Encurte uma string - mude uma string para a esquerda
Uma maneira de encurtar uma corda é mudar seu conteúdo para a esquerda. O conteúdo da string mudou para a esquerda desaparecendo, resultando em uma corda mais curta.
Exemplo: Shift Left Loop
string = "abcdefghijklmnopqrstuvwxyz";
para i em $ (seq 0 $ (($ #string - 1)));
fazer
echo $ string: $ i;
feito
Saída
a B C D e F G H I J K L M N o p q R S T U V W x y Z
bcdefghijklmnopqrstuvwxyz
CDEFGHIJKLMNOPQRSTUVWXYZ
Defghijklmnopqrstuvwxyz
efghijklmnopqrstStuvwxyz
fghijklmnopqrstuvwxyz
ghijklmnopqrstuvwxyz
Hijklmnopqrstuvwxyz
ijklmnopqrstuvwxyz
Jklmnopqrstuvwxyz
Klmnopqrstuvwxyz
LMNOPQRSTUVWXYZ
mnopqrstuvwxyz
Nopqrstuvwxyz
OPQRSTUVWXYZ
pqrstuvwxyz
qrstuvwxyz
rstuvwxyz
STUVWXYZ
tuvwxyz
uvwxyz
V W x y Z
W x y Z
XYZ
yz
z
Mude uma string para a direita, obtenha substring de string
Outra maneira de encurtar uma string em Bash é obter a substring de uma string. A operação resultante pode ser usada para implementar uma operação de mudança à direita semelhante ao método acima.
Exemplo: Shift Right Loop
string = "abcdefghijklmnopqrstuvwxyz";
para i em $ (seq 0 $ (($ #string - 1)));
fazer
echo $ string: 0: $ #string -i;
feito
Saída
a B C D e F G H I J K L M N o p q R S T U V W x y Z
abcdefghijklmnopqrstuvwxy
abcdefghijklmnopqrstuvwx
abcdefghijklmnopqrstuvw
abcdefghijklMnopqrstuv
abcdefghijklmnopqrstu
abcdefghijklmnopqrst
abcdefghijklmnopqrs
abcdefghijklmnopqr
abcdefghijklmnopq
abcdefghijklmnop
abcdefghijklmno
abcdefghijklmn
abcdefghijklm
abcdefghijkl
abcdefghijk
abcdefghij
abcdefghi
abcdefgh
ABCDEFG
ABCDEF
ABCDE
ABCD
abc
ab
a
Exemplo: Shift Loop Pyramid
Por diversão, vamos combinar os dois exemplos de loop de turno acima para desenhar uma etapa em nosso terminal.
Exemplo: Etapa do loop de mudança
string = "abcdefghijklmnopqrstuvwxyz";
para i em $ (seq 0 $ (($ #string - 1)));
fazer
echo $ string: 0: $ #string -i;
feito
| tac;
para i em $ (seq 0 $ (($ #string - 1)));
fazer
echo $ string: $ i;
feito
Saída
a
ab
abc
ABCD
ABCDE
ABCDEF
ABCDEFG
abcdefgh
abcdefghi
abcdefghij
abcdefghijk
abcdefghijkl
abcdefghijklm
abcdefghijklmn
abcdefghijklmno
abcdefghijklmnop
abcdefghijklmnopq
abcdefghijklmnopqr
abcdefghijklmnopqrs
abcdefghijklmnopqrst
abcdefghijklmnopqrstu
abcdefghijklMnopqrstuv
abcdefghijklmnopqrstuvw
abcdefghijklmnopqrstuvwx
abcdefghijklmnopqrstuvwxy
a B C D e F G H I J K L M N o p q R S T U V W x y Z
a B C D e F G H I J K L M N o p q R S T U V W x y Z
bcdefghijklmnopqrstuvwxyz
CDEFGHIJKLMNOPQRSTUVWXYZ
Defghijklmnopqrstuvwxyz
efghijklmnopqrstStuvwxyz
fghijklmnopqrstuvwxyz
ghijklmnopqrstuvwxyz
Hijklmnopqrstuvwxyz
ijklmnopqrstuvwxyz
Jklmnopqrstuvwxyz
Klmnopqrstuvwxyz
LMNOPQRSTUVWXYZ
mnopqrstuvwxyz
Nopqrstuvwxyz
OPQRSTUVWXYZ
pqrstuvwxyz
qrstuvwxyz
rstuvwxyz
STUVWXYZ
tuvwxyz
uvwxyz
V W x y Z
W x y Z
XYZ
yz
z
Capitalize toda a corda em bash
No Bash4 ou mais tarde, você pode capitalizar os caracteres imprimíveis usando a expansão dos parâmetros da seguinte maneira.
$ string ^^
Suponha que jogemos as 10 primeiras palavras da saída do exemplo de etapa do loop de mudança em uma variável chamada pirâmide. Observe que não modificado, o comportamento esperado de ecoar seu conteúdo é o seguinte.
Comando
pyramid = "a abc abcd abcde abcdef abcdefg abcdefgh abcdefghi abcdefghij"
eco $ pyramid
Saída
Um abc abcd abcde abcdef abcdefg abcdefgh abcdefghi abcdefghij
Observe que, como seria de esperar, não há bonés. Vamos explodir. Isto é, vamos fazer todos os seus personagens bonés.
Comando
eco $ pyramid ^^
Saída
Um abc abcd abcde abcdef abcdefg abcdefgh abcdefghi abcdefghij
Essa foi fácil! Que tal se queremos converter apenas a primeira letra em uma corda em tampas como uma frase? Sim, nós podemos! Tudo o que precisamos fazer é tentar um pouco menos, um personagem menos para ser exato.
Capitalize apenas a primeira letra em uma corda
Talvez capitalizar toda. E se você precisar apenas capitalizar a primeira letra como uma frase?
Comandos
pyramid = "a abc abcd abcde abcdef abcdefg abcdefgh abcdefghi abcdefghij"
eco $ pyramid^
Saída
Um abc abcd abcde abcdef abcdefg abcdefgh abcdefghi abcdefghij
Agora, suponha que estamos mais interessados em converter strings em minúsculas. Felizmente, existe uma maneira pura de fazer isso; que é usar expansão de parâmetros.
Converter a corda inteira em minúsculas em bash
Converta uma string em todas as minúsculas em bash usando o operador de expansão de parâmetros duplos ("," ").
Comandos
pyramid = "um abc abcd abcde abcdef abcdefg abcdefgh abcdefghi abcdefghij";
echo $ pyramid;
eco $ pirâmide ,,
Saída
Um abc abcd abcde abcdef abcdefg abcdefgh abcdefghi abcdefghij
Um abc abcd abcde abcdef abcdefg abcdefgh abcdefghi abcdefghij
Converter apenas a primeira letra em uma corda em minúsculas
Converta o primeiro caractere em uma string minúsculas em Bash usando o operador de expansão de parâmetros de commão único (",").
Comandos
pyramid = "um abc abcd abcde abcdef abcdefg abcdefgh abcdefghi abcdefghij";
echo $ pyramid;
eco $ pyramid,
Saída
Um abc abcd abcde abcdef abcdefg abcdefgh abcdefghi abcdefghij
Um abc abcd abcde abcdef abcdefg abcdefgh abcdefghi abcdefghij
Atribuir uma string vazia um valor e retornar seu valor
Muitas vezes, você deseja definir um retorno para uma corda vazia e persistir seu valor em um script de bash, como o caso ao aceitar opcionalmente variáveis do ambiente. Isso pode ser realizado usando a expansão dos parâmetros.
Comandos
echo [$ str];
echo [$ str: = vazio];
eco [$ str]
Saída
[]
[vazio]
[vazio]
Notas: STR é assumido como não atribuído
Substitua um padrão que ocorre em uma corda uma vez em bash
Temos uma corda sentada em uma variável e queremos substituir a primeira ocorrência de uma substring. Aqui está como.
Uso básico
$ str/padrão/substituição
Comandos
str = "01101100011010010110111001110101011111000011010000110100100101101110011101000010111
0011000110110111101101101 ";
echo $ str;
eco $ str/111/000
Saída
011011000110100101101110011101010111111000011010000110100101101110011101
0000101110011000110110111101101101
01101100011010010110000000000101000000100001101000011010010101010000000001
0000100000011000110110000101101101
Substitua todas as ocorrências de um padrão em uma corda em bash
Temos uma string em uma variável e queremos substituir todas as ocorrências de uma substring. Aqui está como.
Uso básico
$ str // Pattern/Substacement
Comandos
str = "011011000110100101101110011101010111110000110100001101001010111111001110
10000101110011000110110111101101101 ";
echo $ str;
echo $ str // 111/000
Saída
0110110001101001011011100111010101111100001101000011010010110111100
1110100001011100110001101101111101101101
01101100011010010110000000000101000000100001101000011010010101010000IRA
00010000100000011000110110000101101101
Como manipular strings em festas usando comandos externos
Para manipular as cordas em Bash usando um comando externo, precisamos usar um recurso que a substituição do comando manual de chamadas bash. Em suma, o que quer que esteja dentro de $ () ou "é tratado como um comando e substituído no lugar. Francamente, prefiro a primeira maneira; No entanto, você pode usar também. A maneira mais fácil de usar a substituição de comando é atribuir o resultado da substituição de comando a uma variável como segue.
Comandos
resultado = $ (comando)
No caso de manipulação de string usando um comando externo no bash, precisaríamos canalizar o eco de uma string para o comando, a menos que seja transmitido pela sequência para o comando como um parâmetro é aceito. Aqui está como deve ser o novo resultado.
Comandos
resultado = $ (echo "$ resultado" | comando)
Agora, vamos tentar fazer algo real. No entanto, reduza uma corda contendo palavras para a última palavra na string? Para este exemplo, vamos usar o comando externo Gawk.
Notas sobre os seguintes comandos. Vamos fazer tudo minúsculo e nos livrar dos períodos. A citação é de Linus Torvalds. É uma citação muito popular.
Comandos
quote = "Talk é barato. Mostre -me o código.";
last_word = $ (echo "$ citação //./ "| Gawk 'print $ (nf)');
eco "$ last_word ,,"
Saída
código
Aqui abordamos como manipular as cordas da maneira pura e também usar comandos externos. Para técnicas de manipulação de cordas Bash Pure Bash, um recurso chamado expansão de parâmetros foi usado. Por outro lado, para o caso de comandos externos, a substituição de comando foi usada. Com certeza, ao escrever esta peça, melhorei minha capacidade de manipular cordas em Bash. Felizmente, você também.
Observe que o tópico desta discussão não foi tratado na íntegra. No entanto, são deixados exercícios para aqueles que gostariam de mexer um pouco mais. Para outras manipulações de string não contidas neste artigo, você pode entrar em contato comigo diretamente ou entrar em contato com o editor.
Isso é manipulação de cordas suficientes, por enquanto ... obrigado,