Przejdź do treści

Centrum Kształcenia Zawodowego i Ustawicznego w Mrągowie

Bash: Konstrukcja [[ ]]

środa,

Bash: Konstrukcja [[ ]]

W Bashu [[ ]] to ulepszona wersja konstrukcji warunkowej w porównaniu do tradycyjnych [ ]. Została wprowadzona, by zapewnić bardziej intuicyjną składnię i rozszerzoną funkcjonalność.

Cechy konstrukcji [[ ]]

Rozszerzone dopasowanie wzorców

Pozwala na użycie operatorów takich jak ==!= z dodatkowymi możliwościami dopasowania wzorców, np. używając *? jako symboli wieloznacznych.

Bezpieczniejsza składnia

Zapobiega niektórym typowym błędom składniowym jak np. rozdzielenie ciągu znaków na słowa na skutek rozwijania zmiennej, czy błędne interpretowanie ciągów znaków jako operatorów.

Operator dopasowania wyrażeń regularnych =~

Umożliwia używanie wyrażeń regularnych w warunkach.

Operatory logiczne && i || wewnątrz warunku

Umożliwia używanie operatorów logicznych bez konieczności ich osadzania w podwójnych nawiasach.

Przykłady

Dopasowanie wzorców

if [[ $filename == *.txt ]]; then
    echo "Plik ma rozszerzenie txt."
fi

Użycie wyrażeń regularnych

if [[ $string =~ ^[a-zA-Z]+$ ]]; then
    echo "Łańcuch zawiera tylko litery."
fi

Połączenie warunków logicznych

if [[ $num -gt 10 && $num -lt 20 ]]; then
    echo "Liczba jest większa niż 10 i mniejsza niż 20."
fi

Testowanie łańcuchów znaków

if [[ -z $string ]]; then
    echo "String jest pusty."
fi

Uwagi

  • [[ ]] jest bardziej elastyczny i bezpieczny niż [ ], ale jest też mniej przenośny, ponieważ nie jest obsługiwany przez wszystkie powłoki. Na przykład, nie będzie działać w starszych wersjach sh lub w niektórych innych shellach, takich jak dash.
  • W [[ ]], rozdzielenie słów (word splitting) i rozwijanie znaków wieloznacznych (filename expansion) nie zachodzi, co czyni je bezpieczniejszymi w użyciu, szczególnie gdy manipulujesz zmiennymi, które mogą zawierać spacje, znaki wieloznaczne lub inne specjalne znaki.
  • Warto pamiętać, że [[ ]] jest konstrukcją specyficzną dla Bash i nie należy jej mylić z [ ], która jest w większym stopniu przenośna i zgodna z POSIX.

Artykuł: Darkflash DR11 RGB

Darkflash DR11 RGB

Artykuł: Aigo AR12 Pro

Aigo AR12 Pro

Artykuł: Free Unix Spectrum Emulator

Free Unix Spectrum Emulator

Artykuł: Beznarzędziowe wtyki 8P8C

Beznarzędziowe wtyki 8P8C

Artykuł: Gra szyfrów

Gra szyfrów

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły