Deklarowanie zmiennych i podstawowe operacje na nich w BASH-u

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 17734 razy

Deklarowanie zmiennych i ich wyświetlanie

Zmienne w BASH-u są deklarowane w sposób niejawny. Nie ma tutaj również (jak to bywa w językach skryptowych) jawnej kontroli typów, które zasadniczo mogą być albo tekstowe albo liczbowe. Przypisanie zmiennej w BASH-u wartości jest równoznaczne z jej utworzeniem:

STR_VARIABLE="zmienna tekstowa"; INT_VARIABLE=10; echo "$STR_VARIABLE $INT_VARIABLE"; echo '$STR_VARIABLE $INT_VARIABLE';

Wykonanie powyższego skryptu spowoduje wyświetlenie:

zmianna tekstowa 10
$str_variable $int_variable

Jak widać pierwszym poleceniem echo wyświetlone zostały wartości zapisane w zmiennych ponieważ użyte zostały znaki cudzysłowia, natomiast w drugim przypadku wyświetlone zostały nazwy, ponieważ użyto apostrofów. Odwołując się do zmiennej jej nazwę trzeba poprzedzić znakiem $.

Uwaga! Przy deklarowaniu zmiennych nie można używać znaku spacji przed i po operatorze podstawienia =, czyli coś takiego:

STR_VARIABLE = "zmianna tekstowa";

spowoduje błąd.

Wprowadzanie do zmiennej wartości wpisanej z klawiatury

Poleceniem read można wprowadzić dane z klawiatury do zmiennej:

read VARIABLE; echo $VARIABLE;

Wczytanie do zmiennej wyniku działania polecenia systemowego

Wartość zwracana przez każde polecenie systemowe może zostać przypisana zmiennej w następujący sposób:

FILES=$(ls -Q); echo $FILES;

Powyższy kod wczyta do zmiennej $FILES listę plików i folderów otrzymaną poleceniem ls -Q, gdzie opcja -Q powoduje ujęcie nazw folderów i plików w cudzysłowia.

Operacje arytmetyczne na zmiennych liczbowych

W BASH-u można operować jedynie na zmiennych całkowitych wykorzystując przy tym następujące podstawowe operatory:

  • Wykonanie działania matematycznego można przeprowadzić z użyciem podwójnych nawiasów okrągłych:

    $VAR1=10; $VAR2=20; $VAR3=$(($VAR1 * $VAR2)); echo $VAR3;

    Wynik działania:

    200

    Można również użyć nawiasów kwadratowych:

    $VAR1=10; $VAR2=20; $VAR3=$[$VAR1 * $VAR2]; echo $VAR3;