androide

Come confrontare le stringhe in bash

Corso C-C++ ITA - 4 Esercizio: stringhe.

Corso C-C++ ITA - 4 Esercizio: stringhe.

Sommario:

Anonim

Quando si scrivono script Bash, è spesso necessario confrontare due stringhe per verificare se sono uguali o meno. Due stringhe sono uguali quando hanno la stessa lunghezza e contengono la stessa sequenza di caratteri.

Questo tutorial descrive come confrontare le stringhe in Bash.

Operatori di confronto

Gli operatori di confronto sono operatori che confrontano valori e restituiscono vero o falso. Quando si confrontano le stringhe in Bash è possibile utilizzare i seguenti operatori:

  • string1 = string2 e string1 == string2 - L'operatore di uguaglianza restituisce vero se gli operandi sono uguali.
    • Utilizzare l'operatore = con il test ; then echo "Strings are equal." else echo "Strings are not equal." fi ; then echo "Strings are equal." else echo "Strings are not equal." fi

      Quando lo script viene eseguito, verrà stampato il seguente output.

      Strings are equal.

      Ecco un altro script che accetta l'input dell'utente e confronta le stringhe fornite. In questo esempio, useremo il ]; then echo "Strings are equal." else echo "Strings are not equal." fi ]; then echo "Strings are equal." else echo "Strings are not equal." fi

      Esegui lo script e inserisci le stringhe quando richiesto:

      Enter first string: Linuxize Enter second string: Ubuntu Strings are not equal.

      Puoi anche usare la logica e && e o || per confrontare le stringhe:

      ] && echo "Equal" || echo "Not equal"

      Not equal

      Controlla se una stringa contiene una sottostringa

      Esistono diversi modi per verificare se una stringa contiene una sottostringa.

      Un approccio consiste nell'utilizzare circondare la sottostringa con simboli asterisco * che significa che corrispondono a tutti i caratteri.

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

      Lo script farà eco a quanto segue:

      It's there.

      Un'altra opzione è quella di utilizzare l'operatore regex =~ come mostrato di seguito:

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

      Il periodo seguito da un asterisco .* Corrisponde a zero o più occorrenze a qualsiasi carattere tranne un carattere di nuova riga.

      Controlla se una stringa è vuota

      Molto spesso dovrai anche verificare se una variabile è una stringa vuota o meno. Puoi farlo usando gli operatori -n e -z .

      #!/bin/bash VAR='' if]; then echo "String is empty." fi

      String is empty.

      #!/bin/bash VAR='Linuxize' if]; then echo "String is not empty." fi

      String is not empty.

      Confronto delle stringhe con l'operatore del caso

      Invece di usare gli operatori di test puoi anche usare l'istruzione case per confrontare le stringhe:

      #!/bin/bash VAR="Arch Linux" case $VAR in "Arch Linux") echo -n "Linuxize matched";; Fedora | CentOS) echo -n "Red Hat";; esac

      Linuxize matched.

      Confronto lessicografico

      Il confronto lessicografico è un'operazione in cui due stringhe vengono confrontate in ordine alfabetico confrontando i caratteri in una stringa in sequenza da sinistra a destra. Questo tipo di confronto viene usato raramente.

      I seguenti script confrontano due stringhe lessicograficamente:

      #!/bin/bash VAR1="Linuxize" VAR2="Ubuntu" if]; then echo "${VAR1} is lexicographically greater then ${VAR2}." elif]; then echo "${VAR2} is lexicographically greater than ${VAR1}." else echo "Strings are equal" fi

      Lo script genererà quanto segue:

      Ubuntu is lexicographically greater than Linuxize.

      Conclusione

      Il confronto delle stringhe è una delle operazioni più basilari e utilizzate di frequente negli script Bash. Dopo aver letto questo tutorial, dovresti avere una buona conoscenza di come confrontare le stringhe in Bash. Puoi anche consultare la nostra guida sulla concatenazione di stringhe.

      bash terminal