Unix / Linux - używanie zmiennych powłoki

W tym rozdziale dowiemy się, jak używać zmiennych powłoki w systemie Unix. Zmienna to ciąg znaków, do którego przypisujemy wartość. Przypisywaną wartością może być liczba, tekst, nazwa pliku, urządzenie lub dowolny inny typ danych.

Zmienna to nic innego jak wskaźnik do rzeczywistych danych. Powłoka umożliwia tworzenie, przypisywanie i usuwanie zmiennych.

Nazwy zmiennych

Nazwa zmiennej może zawierać tylko litery (od a do z lub od A do Z), cyfry (od 0 do 9) lub znak podkreślenia (_).

Zgodnie z konwencją, zmienne powłoki systemu Unix będą miały nazwy zapisane WIELKIMI LITERAMI.

Poniższe przykłady to prawidłowe nazwy zmiennych -

_ALI
TOKEN_A
VAR_1
VAR_2

Poniżej znajdują się przykłady nieprawidłowych nazw zmiennych -

2_VAR
-VARIABLE
VAR1-VAR2
VAR_A!

Powód, dla którego nie możesz używać innych znaków, takich jak !, *lub - polega na tym, że te znaki mają specjalne znaczenie dla powłoki.

Definiowanie zmiennych

Zmienne definiuje się następująco -

variable_name=variable_value

Na przykład -

NAME="Zara Ali"

Powyższy przykład definiuje zmienną NAME i przypisuje jej wartość „Zara Ali”. Zmienne tego typu nazywane sąscalar variables. Zmienna skalarna może zawierać tylko jedną wartość naraz.

Shell umożliwia przechowywanie dowolnej wartości w zmiennej. Na przykład -

VAR1="Zara Ali"
VAR2=100

Dostęp do wartości

Aby uzyskać dostęp do wartości przechowywanej w zmiennej, należy poprzedzić jej nazwę znakiem dolara ($) -

Na przykład poniższy skrypt uzyska dostęp do wartości zdefiniowanej zmiennej NAZWA i wydrukuje ją na STDOUT -

#!/bin/sh

NAME="Zara Ali"
echo $NAME

Powyższy skrypt wygeneruje następującą wartość -

Zara Ali

Zmienne tylko do odczytu

Powłoka zapewnia sposób oznaczania zmiennych jako tylko do odczytu przy użyciu polecenia tylko do odczytu. Po oznaczeniu zmiennej jako tylko do odczytu nie można zmienić jej wartości.

Na przykład poniższy skrypt generuje błąd podczas próby zmiany wartości NAME -

#!/bin/sh

NAME="Zara Ali"
readonly NAME
NAME="Qadiri"

Powyższy skrypt wygeneruje następujący wynik -

/bin/sh: NAME: This variable is read only.

Unsetting Variables

Cofnięcie lub usunięcie zmiennej powoduje, że powłoka usuwa zmienną z listy zmiennych, które śledzi. Po usunięciu ustawienia zmiennej nie można uzyskać dostępu do wartości przechowywanej w zmiennej.

Poniżej znajduje się składnia, aby usunąć zdefiniowaną zmienną za pomocą unset polecenie -

unset variable_name

Powyższe polecenie kasuje wartość zdefiniowanej zmiennej. Oto prosty przykład, który pokazuje, jak działa polecenie -

#!/bin/sh

NAME="Zara Ali"
unset NAME
echo $NAME

Powyższy przykład niczego nie drukuje. Nie możesz użyć polecenia unset, abyunset zaznaczone zmienne readonly.

Typy zmiennych

Gdy powłoka jest uruchomiona, występują trzy główne typy zmiennych -

  • Local Variables- Zmienna lokalna to zmienna obecna w bieżącej instancji powłoki. Nie jest dostępna dla programów uruchamianych przez powłokę. Są ustawiane w wierszu polecenia.

  • Environment Variables- Zmienna środowiskowa jest dostępna dla każdego procesu potomnego powłoki. Niektóre programy wymagają zmiennych środowiskowych, aby działać poprawnie. Zwykle skrypt powłoki definiuje tylko te zmienne środowiskowe, które są wymagane przez uruchamiane przez niego programy.

  • Shell Variables- Zmienna powłoki to specjalna zmienna ustawiana przez powłokę i wymagana przez powłokę do prawidłowego działania. Niektóre z tych zmiennych są zmiennymi środowiskowymi, podczas gdy inne są zmiennymi lokalnymi.