Zmienne specjalne

Zmienne specjalne (ang. special variables, special parameters)

To najbardziej prywatne zmienne powłoki, są udostępniane użytkownikowi tylko do odczytu (są wyjątki). Kilka przykładów:

  • $0 - nazwa bieżącego skryptu lub powłoki
  • $1..$9 - Parametry przekazywane do skryptu (wyjątek, użytkownik może modyfikować ten rodzaj $-ych specjalnych.
  • $# - Zawiera liczbę argumentów przekazanych w linii poleceń.
  • $_ - Ścieżka z jaką został wywołany skrypt (powłoka)

Przykład:

#!/bin/bash

echo "Zostałem wysołany jako: $_"

Efekt wykonania:

bash$ ./skrypt.sh
Zostalem wywolany jako ./skrypt.sh
   bash$ bash skrypt.sh
   Zostalem wywolany jako /bin/bash


* ``$@`` - Pokaże wszystkie parametry przekzywane do skryptu (też wyjątek), równoważne $1 $2 $3..., jeśli nie podane są żadne parametry $@ interpretowana jest jako **nic**.

Przykład:

#!/bin/bash
echo "Skrypt uruchomiono z parametrami: $@"

A teraz wywołaj ten skrypt z jakimiś parametrami, mogą być brane z powietrza np.:

./plik -a d

Efekt będzie wyglądał następująco:

Skrypt uruchomiono z paramertami -a d
  • $? - kod powrotu ostanio wykonywanego polecenia (0 jeśli polecenie wykonało się poprawnie, innawartość jeśli błędnie).
bash$ touch plik
bash$ cat plik

Po sprawdzeniu wartości zmiennej $? uzyskujemy

bash$ echo $?
0

Ponieważ polecenie cat się udało, zmienna statusu zawiera 0. Teraz spróbujmy wykonać to polecenie na nie istniejącym pliku:

bash$ cat niematakiegopliku.txt
bash$ echo $?
1

Wartość 1 pokazuje, że powyższe polecenie się nie powiodło.

  • $$ - PID procesu bieżącej powłoki