Jak porovnávat řetězce v Bash

How Compare Strings Bash

Pro různé účely programování musíme porovnat hodnotu dvou řetězců. Vestavěné funkce se používají v mnoha programovacích jazycích k testování rovnosti dvou řetězců. Rovnost a nerovnost dvou řetězců v bash můžete zkontrolovat pomocí -li tvrzení. == slouží ke kontrole rovnosti a ! = slouží ke kontrole nerovnosti řetězců. Hodnoty dvou řetězců můžete částečně porovnat také v bash. Jak můžete porovnat hodnoty řetězců v bash, je ukázáno pomocí různých příkladů v tomto kurzu.

Příklad-1: Porovnání řetězců pomocí operátorů ==

Neexistuje žádná vestavěná srovnávací funkce pro kontrolu rovnosti dvou řetězcových hodnot v bash jako jiný standardní programovací jazyk. V následujícím skriptu dvě proměnné řetězce, strval1 a strval2 jsou deklarovány. Vlastní ekvivalence těchto dvou řetězcových proměnných se testuje pomocí první -li prohlášení skriptu. Hodnota strval1 je porovnána s řetězcovou hodnotou pro kontrolu rovnosti ve druhém -li tvrzení.



#!/bin/bash

strval1='Ubuntu'
strval2='Okna'

#Zkontrolujte rovnost dvou řetězcových proměnných

-li [ $ strval1==$ strval2 ];pak
vyhodil „Řetězce jsou si rovny“
jiný
vyhodil „Řetězce nejsou stejné“
být

#Zkontrolujte rovnost proměnné pomocí hodnoty řetězce

-li [ $ strval1=='Ubuntu' ];pak
vyhodil 'Operační systém Linux'
jiný
vyhodil 'Operační systém Windows'
být

Výstup:



První srovnání není stejné a druhé srovnání je stejné.



Příklad-2: Porovnání řetězců pomocí operátoru! =

Nerovnost dvou řetězcových proměnných je zkontrolována v následujícím příkladu. Zde dvě hodnoty nejsou stejné. Pokud tedy podmínka bude pravdivá a Operační systém Windows vytiskne.

#!/bin/bash

strval1='Ubuntu'
strval2='Okna'

#Zkontrolujte nerovnost proměnné pomocí řetězcové hodnoty

-li [ $ strval2 !='Ubuntu' ];pak
vyhodil 'Operační systém Windows'
jiný
vyhodil 'Operační systém Linux'
být

Výstup:



Příklad-3: Porovnání částečných řetězců

Částečnou hodnotu můžete porovnat pomocí zástupného znaku v bash skriptu. V následujícím skriptu * se používá jako zástupný znak pro částečné shody. Řetězcová proměnná, strval obsahuje slovo Internet. Takže první -li skriptu vrátí true a vytiskne se Částečně zápas . Bash rozlišuje velká a malá písmena. Za to druhé -li skriptu vrátí hodnotu false pro použití internetu jako částečného řetězce, který se nerovná porovnávání písmen.

#!/bin/bash

strval='Microsoft Internet Explorer'

-li [[ $ strval==*Internet* ]];
pak
vyhodil 'Částečně shoda'
jiný
vyhodil 'Žádná shoda'
být

-li [[ $ strval==*Internet* ]];
pak
vyhodil 'Částečně shoda'
jiný
vyhodil 'Žádná shoda'
být

Výstup:

Příklad-4: Porovnejte řetězec se vstupní hodnotou uživatele

Někdy musíme pro účely programování porovnat hodnotu řetězce použitou uživatelem s konkrétní hodnotou řetězce. V následujícím příkladu budou řetězcová data převzata od uživatele jako vstup a porovnána nerovnost dat s pevnou hodnotou. Pokud je podmínka pravdivá, vytiskne se nebyl nalezen žádný záznam , jinak se vytiskne Záznam nalezen .

#!/bin/bash

vyhodil 'Zadejte své jméno'
čístvstup

-li [ $ vstup !='Fahmida' ];
pak
vyhodil 'Nebyl nalezen žádný záznam'
jiný
vyhodil 'Záznam nalezen'
být

Výstup:

Video z této lekce je zde:

Po dokončení výše uvedených příkladů s jasným porozuměním pro vás bude úkol porovnávání řetězců v bash jednodušší.