Instrukcje IF

Wprowadzenie do skryptów Bash

Alex Scriven

Data Scientist

Podstawowa instrukcja IF

Podstawowa instrukcja IF w Bash ma następującą strukturę:

if [ CONDITION ]; then

# SOME CODE
else # SOME OTHER CODE
fi

Dwie wskazówki:

  • Spacje między nawiasami kwadratowymi a elementami warunku (pierwszy wiersz)
  • Średnik po nawiasie zamykającym ];
Wprowadzenie do skryptów Bash

Instrukcja IF i ciągi znaków

Możemy porównać ciągi znaków w instrukcji IF:

x="Queen"

if [ $x == "King" ]; then
echo "$x is a King!"
else echo "$x is not a King!" fi
Queen is not a King!

Można też użyć != dla 'nie równa się'

Wprowadzenie do skryptów Bash

Arytmetyczne instrukcje IF (opcja 1)

Arytmetyczne instrukcje IF mogą używać struktury z podwójnymi nawiasami:

x=10

if (($x > 5)); then echo "$x is more than 5!" fi
10 is more than 5!
Wprowadzenie do skryptów Bash

Arytmetyczne instrukcje IF (opcja 2)

Arytmetyczne instrukcje IF mogą też używać nawiasów kwadratowych i flag arytmetycznych zamiast (>, <, =, != itp.):

  • -eq dla 'równa się'
  • -ne dla 'nie równa się'
  • -lt dla 'mniejsze niż'
  • -le dla 'mniejsze lub równe'
  • -gt dla 'większe niż'
  • -ge dla 'większe lub równe'
Wprowadzenie do skryptów Bash

Przykład arytmetycznej instrukcji IF

Poniżej poprzedni przykład zapisany z użyciem notacji nawiasów kwadratowych:

x=10
if [ $x -gt 5 ]; then
    echo "$x is more than 5!"
fi
10 is more than 5!
Wprowadzenie do skryptów Bash

Inne flagi warunkowe Bash

Bash oferuje również flagi związane z plikami:

  • -e jeśli plik istnieje
  • -s jeśli plik istnieje i ma rozmiar większy od zera
  • -r jeśli plik istnieje i jest czytelny
  • -w jeśli plik istnieje i jest zapisywalny

Oraz wiele innych:

Wprowadzenie do skryptów Bash

AND i OR w Bash

 

Do łączenia warunków (AND) lub użycia OR w Bash stosuje się następujące symbole:

  • && dla AND
  • || dla OR
Wprowadzenie do skryptów Bash

Wiele warunków

W Bash można łączyć warunki w następujący sposób:

x=10
if [ $x -gt 5 ] && [ $x -lt 11 ]; then
    echo "$x is more than 5 and less than 11!"
fi

Lub użyć notacji z podwójnymi nawiasami kwadratowymi:

x=10
if [[ $x -gt 5 && $x -lt 11 ]]; then
    echo "$x is more than 5 and less than 11!"
fi
Wprowadzenie do skryptów Bash

IF i programy wiersza poleceń

Można też używać programów wiersza poleceń bezpośrednio w warunku, bez nawiasów kwadratowych.

Na przykład, jeśli plik words.txt zawiera 'Hello World!':

if grep -q Hello words.txt; then
    echo "Hello is inside!"
fi
Hello is inside!
Wprowadzenie do skryptów Bash

IF z powłoką w powłoce

Można też użyć powłoki w powłoce w warunku.

Przepiszmy poprzedni przykład – wynik będzie taki sam.

if $(grep -q Hello words.txt); then
    echo "Hello is inside!"
fi
Hello is inside!
Wprowadzenie do skryptów Bash

Ćwiczmy!

Wprowadzenie do skryptów Bash

Preparing Video For Download...