GNU/Linux >> Linux Esercitazione >  >> Linux

Come verificare se la stringa contiene una sottostringa in Bash

Quindi, hai una stringa lunga e vuoi controllare che questa stringa contenga una sottostringa nel tuo script bash.

Esistono più modi per verificare la presenza di sottostringhe nella shell bash. Mostrerò prima alcuni semplici esempi, seguiti da un fantastico script bash che utilizza questo concetto in uno scenario reale.

Controllo della sottostringa in bash usando l'istruzione if else

Se hai familiarità con le istruzioni condizionali in bash, puoi usarlo per verificare se una stringa contiene la sottostringa nel modo seguente:

if [[ $fullstring == *"$substr"* ]];

Semplice esempio per controllare la sottostringa

Le doppie parentesi sono necessarie qui. Considero questo il modo nativo perché non utilizza nessun altro strumento. Lascia che ti spieghi lo snippet sopra con un esempio appropriato.

Inizializza una variabile con una stringa lunga:

[email protected]:~$ fullstring="This is a string with a stretch"

Ora, memorizza la parola "stretch" all'interno di una variabile chiamata substr1 :

[email protected]:~$ substr="stretch"

Facciamo il confronto delle sottostringhe:

[email protected]:~$ if [[ $fullstring == *"$substr"* ]]; then

Qui, * significa zero o più caratteri. Spero che tu abbia familiarità con il concetto di virgolette nello scripting di bash. Il $substr all'interno delle virgolette lo sostituisce con il suo valore.

Fondamentalmente, stai controllando se la stringa completa corrisponde al tipo di modello xxxxsubstrxxxx.

Potresti anche usare la sottostringa direttamente invece di usarla tramite una variabile come questa:

[email protected]:~$ if [[ $fullstring == *"stretch"* ]]; then

Ottieni l'essenza. Fammi completare questo script con l'istruzione else che mostra un messaggio alternativo se la sottostringa non viene trovata:

#!/bin/bash

fullstring="This is a string with a stretch"
substr="stretch"

if [[ $fullstring == *"$substr"* ]]; then
        echo "Found $substr!"
else
        echo "$substr not found!"
fi

Puoi facilmente vedere che se esegui lo script di shell sopra, troverà la sottostringa.

[email protected]:~$ bash substr.sh
Found stretch!

Un esempio del mondo reale migliore per trovare sottostringa in bash

Le sottostringhe possono essere molto utili negli script per "interagire" con gli utenti. Usa il comando di lettura per consentire al tuo script bash di accettare l'input dell'utente.

echo "Hey there..what is your name?"
read Name
echo "Hello "$name"! The Matrix Resurrections trailer is here! Is your pill Red or Blue?"
read Pill
if [[ $Pill == *"Red"* || $Pill == *"red"* ]]; then
  echo "Welcome..to the real world "$Name"!"
else
  echo "Wake Up "$Name"!"
fi

Dagli il permesso eseguibile ed esegui lo script:

[email protected]:~$ chmod +x makeyourchoice.sh
[email protected]:~$ ./makeyourchoice.sh

Output per lo script precedente:

Hey there..what is your name?
avimanyu
Hello avimanyu! The Matrix Resurrections trailer is here! Is your pill Red or Blue?
I have Red pill
Welcome..to the real world avimanyu!

Qui, ho migliorato leggermente la condizione if prendendomi cura di due probabili possibilità di distinzione tra maiuscole e minuscole. Solo Red è la sottostringa qui. Ma red è anche un possibile input. Quindi, ho aggiunto un'altra condizione. || indica “o”. Se inserisci Red , è una sottostringa. Ma anche se red non è uno, dovevo aggiungerlo.

Trovare una sottostringa in bash usando il comando grep

Ecco un altro modo per trovare una sottostringa in una stringa in bash. Usa il comando grep in questo modo:

if grep -q "$substr" <<< "$fullstring"; then echo "Found"; fi

Il q opzioni significa che grep sarà in modalità silenziosa, senza mostrare alcun output. Tieni presente che ce ne sono 3 <, non solo 2.

Spero che questo rapido tutorial ti abbia aiutato a cercare una sottostringa specifica all'interno di una stringa. Se hai domande o suggerimenti, sentiti libero di lasciare un commento qui sotto. A proposito..che pillola hai scelto? Hai fatto la tua scelta?


Linux
  1. Come controllare la sottostringa in Shell Script Bash?

  2. Come leggere la stringa come numero esadecimale in Bash?

  3. Come dividere una stringa nello script Bash

  4. Come funziona cat << EOF in bash?

  5. Come verificare se un file è vuoto in Bash?

Come verificare se esiste un file o una directory in Bash

Come verificare se un file o una directory esiste in Bash

Come verificare se una stringa contiene una sottostringa in Bash

Come verificare se esiste un file o una directory in Bash Shell

Come posso controllare la sintassi di uno script Bash senza eseguirlo?

bash - trova la posizione dell'indice della stringa della sottostringa