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ł: Konkurs z Języka Angielskiego Zawodowego

Konkurs z Języka Angielskiego Zawodowego

Artykuł: Testujemy kontroler ARGB

Testujemy kontroler ARGB

Artykuł: Olimpiada Zdrowia PCK

Olimpiada Zdrowia PCK

Artykuł: Zostań dawcą szpiku!

Zostań dawcą szpiku!

Artykuł: Przeglądarka Vivaldi

Przeglądarka Vivaldi

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły