GNU/Linux >> Znalost Linux >  >> Linux

Jak porovnávat řetězce ve skriptování Bash Shell

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.


Linux
  1. Jak porovnávat čísla a řetězce ve skriptu Linux Shell

  2. Jak vyhodnotit řetězce jako čísla v Bash

  3. Jak zřetězit řetězce v Bash

  1. Jak Bash ví, jak je vyvoláván?

  2. Jak analyzovat Json pomocí skriptování Shell v Linuxu?

  3. Jak porovnat dva řetězce ve formátu verze oddělené tečkami v Bash?

  1. Jak změnit Cron Shell (sh to Bash)?

  2. Jak zopakovat nový řádek ve skriptech Bash Shell

  3. Jak na to:Neomezená historie Bash/shell?