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ł: Slackware

Slackware

Artykuł: Virtual Desktop Infrastructure

Virtual Desktop Infrastructure

Artykuł: Wirtualizacja: Overcommitment

Wirtualizacja: Overcommitment

Artykuł: Marc Andreessen

Marc Andreessen

Artykuł: Zakończenie staży

Zakończenie staży

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły