Android

Como verificar se uma string contém uma substring no bash

Shell Bash - Execução simples e sequencial de comandos no Linux

Shell Bash - Execução simples e sequencial de comandos no Linux

Índice:

Anonim

Uma das operações mais comuns ao trabalhar com seqüências de caracteres no Bash é determinar se uma sequência contém ou não outra sequência., mostraremos várias maneiras de verificar se uma string contém uma substring.

Usando curingas

A abordagem mais fácil é cercar a substring com símbolos curinga do asterisco (asterisco) * e compará-lo com a sequência. Curinga é um símbolo usado para representar zero, um ou mais caracteres.

Se o teste retornar true , a substring estará contida na sequência.

No exemplo abaixo, estamos usando a instrução if e o operador de igualdade ( == ) para verificar se a substring SUB é encontrada na cadeia STR :

#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' if]; then echo "It's there." fi

Quando executado, o script produzirá:

It's there.

Usando o operador de caso

Em vez de usar a instrução if, você também pode usar a instrução case para verificar se uma sequência inclui ou não outra sequência.

#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' case $STR in *"$SUB"*) echo -n "It's there.";; esac

Usando o operador Regex

Outra opção para determinar se uma substring especificada ocorre em uma sequência é usar o operador regex =~ . Quando esse operador é usado, a sequência correta é considerada uma expressão regular.

O período seguido por um asterisco .* Corresponde a zero ou mais ocorrências de qualquer caractere, exceto um caractere de nova linha.

#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' if]; then echo "It's there." fi

O script ecoará o seguinte:

It's there.

Usando Grep

O comando grep também pode ser usado para encontrar cadeias em outra cadeia.

No exemplo a seguir, estamos passando a string $STR como uma entrada para grep e verificando se a string $SUB é encontrada dentro da string de entrada. O comando retornará true ou false conforme apropriado.

#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' if grep -q "$SUB" <<< "$STR"; then echo "It's there" fi

A opção -q diz ao grep para ficar quieto, para omitir a saída.

Conclusão

Verificar se uma cadeia de caracteres contém uma subcadeia de caracteres é uma das operações mais básicas e usadas com mais freqüência nos scripts do Bash.

Depois de ler este tutorial, você deve entender bem como testar se uma sequência inclui outra. Você também pode usar outros comandos como awk ou sed para teste.

terminal bash