Práce s řetězci je součástí každého programovacího jazyka. Skriptování prostředí Bash se nijak neliší. Dokonce i syntaxe je v podstatě stejná.
V tomto rychlém tutoriálu vám ukážu, jak porovnávat řetězce ve skriptech Bash shell.
Porovnání bashových řetězců
Zde je návod, jak porovnat řetězce v Bash.
if [ "$string1" == "$string2" ]
Můžete také použít přímo řetězec namísto použití proměnné.
if [ "$string1" == "This is my string" ]
Dovolte mi, abych vám to ukázal na správných příkladech.
Zkontrolujte, zda jsou dva řetězce stejné
Pokud chcete zkontrolovat, zda jsou dva řetězce stejné, zde je příklad:
#!/bin/bash
string1="MyString"
string2="MyString"
if [ "$string1" == "$string2" ]
then
echo "Equal Strings"
else
echo "Strings not equal"
fi
Tip:Věnujte pozornost mezerám
Mezi [
musí být mezera a název proměnné a operátor rovnosti ==. Pokud zde chybí některá z mezer, zobrazí se chyba, jako je „očekává se unární operátor“ nebo chybí „]“.
Zkontrolujte, zda se řetězce v Bash neshodují
Místo kontroly kvality udělejme opak a zkontrolujme nerovnost. Bash také poskytuje operátor negace, takže můžete snadno použít podmínku „pokud není rovno“ ve skriptech shellu.
if [ "$string1" != "Not MyString" ]
Úplný příklad vypadá takto:
#!/bin/bash
string1="MyString"
if [ "$string1" != "Not MyString" ]
then
echo "Not Equal Strings"
else
echo "Strings equal"
fi
Zkontrolujte, zda je řetězec v Bash prázdný nebo prázdný
Na rozdíl od některých jiných jazyků, jako je C++, v Bash můžete zkontrolovat, zda je řetězec prázdný nebo prázdný, jedním příkazem:
if [ -z "$VAR" ]
-z ve skutečnosti kontroluje, zda je délka proměnné nulová nebo ne. Pokud proměnná není nastavena nebo je prázdná (rovná se „“), délka bude nula, a proto se podmínka vrátí jako true.
Kompletní příklad lze vidět zde:
#!/bin/bash
string1=
string2=""
if [ -z "$string1" ]
then
echo "Null Strings"
fi
if [ -z "$string2"]
then
echo "Empty String"
fi
Poznámka k použití jednoduchých hranatých závorek „[]“ a dvojitých hranatých závorek „[[]]“ ve skriptech bash
Můžete také použít příkaz if s dvojitými závorkami, jako je tento:
if [[ "$string1" == "My String" ]]
Jediný držák je stará konvence Posix a má některé nedostatky. Pokud nepoužíváte dvojité uvozovky kolem proměnných a proměnná není definována, zmizí z kódu a bude to mít za následek chybu syntaxe.
if [ $string1 == "My String" ]
Pokud je proměnná $string1 prázdná nebo není definována ve výše uvedeném kódu, bude tento řádek ekvivalentní
if [ == "$string2" ]
Závěr
Doufám, že vám tento krátký návod pomohl při porovnávání řetězců ve skriptech bash shellu. Doporučuji si také přečíst další rychlý návod na příkaz bash sleep.
Máte-li dotazy nebo návrhy, neváhejte zanechat komentář níže.